84 votes

TypeError : l'objet 'tuple' ne prend pas en charge l'affectation d'élément lors de l'échange de valeurs

J'écris un programme de tri simple en python et je rencontre cette erreur. Je veux échanger des éléments de liste mais cela renvoie une erreur. Je joins l'erreur et le programme en question ci-dessous.

 list[i+1] = list[i]
TypeError: 'tuple' object does not support item assignment

Code:

 def my_sort(list):
    for index in range(1,len(list)):
        value=list[index]
        i=index-1
        while i>=0:
            if value<list[i]:
                list[i+1] = list[i]
                list[i]=value
                i=i-1
            else:
                break
    return

    input_list=eval(input("Enter list items"))
    my_sort(input_list)
    print(input_list)

112voto

Ignacio Vazquez-Abrams Points 312628

L'évaluation de "1,2,3" donne (1, 2, 3) , un tuple . Comme vous l'avez découvert, les tuples sont immuables. Convertir en liste avant le traitement.

6voto

erptocoding Points 77

ou simplement affecter le tuple entier lui-même, au lieu de changer les éléments à l'intérieur du tuple.

exemple : souhaitez ajouter 'count' au 1er élément du tuple 'i-th' :

 tup[i] = (tup[i][0] + count, tup[i][1])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X