2011-10-12 11 views
27

Sto scrivendo un semplice programma di ordinamento in python e ho riscontrato questo errore. Voglio scambiare gli elementi della lista ma restituisce un errore. Vi allego l'errore e il programma in questione di seguito.Python: TypeError: l'oggetto 'tuple' non supporta l'assegnazione dell'articolo

list[i+1] = list[i] 

TypeError: 'tuple' object does not support item assignment 
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) 
+1

Non utilizzare l'elenco di parole. Potresti inserire il codice correttamente rientrato? – lc2817

+12

Si prega di * non * mai * di chiamare una variabile "lista". "elenco" è un tipo predefinito. Ora non puoi convertirlo da una tupla ad una lista con 'list (cosa)'. –

+0

* Perché nel mondo * useresti eval? Una soluzione molto più semplice sarebbe quella di dividere con ',' e quindi rimuovere gli spazi extra. – Dev

risposta

43

Valutare "1,2,3" risultati in (1, 2, 3), un tuple. Come hai scoperto, le tuple sono immutabili. Converti in un elenco prima dell'elaborazione.

+0

Sono nuovo in Python. Potete per favore aiutarmi come convertire tuple in lista? O meglio, come si può inserire direttamente un elenco di utenti? –

+8

Per inserire direttamente una lista, circondare la sequenza con parentesi quadre: "[1,2,3]". Per convertire in una lista, passala alla funzione di costruzione lista: 'L = lista (S)'. –

+0

@JohnConnor: potresti leggere http://docs.python.org/tutorial/ –

Problemi correlati