2011-10-12 7 views
27

Estoy escribiendo un programa de ordenación simple en python y encuentro este error. Quiero intercambiar elementos de lista pero devuelve un error. Adjunto el error y el programa en cuestión a continuación.Python: TypeError: el objeto 'tuple' no es compatible con la asignación de elementos

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

No utilice la lista de palabras. ¿Podrías poner el código correctamente sangrado? – lc2817

+12

Por favor, no * siempre * llame a una "lista" variable. "lista" es un tipo incorporado. Ahora no puede convertirlo de una tupla a una lista con 'list (thing)'. –

+0

* ¿Por qué en el mundo * usarías eval? Una solución mucho más fácil sería dividir por ',' y luego quitar espacios extra. – Dev

Respuesta

43

Evaluación de "1,2,3" Resultados en (1, 2, 3), un tuple. Como has descubierto, las tuplas son inmutables. Convierte a una lista antes del procesamiento.

+0

Soy nuevo en Python. ¿Puedes ayudarme a convertir tuplas en listas? O mejor, ¿cómo hacer que el usuario ingrese una lista directamente? –

+8

Para ingresar una lista directamente, rodee la secuencia con corchetes: "[1,2,3]". Para convertir a una lista, páselo al constructor de la lista: 'L = list (S)'. –

+0

@JohnConnor: es posible que desee leer http://docs.python.org/tutorial/ –

Cuestiones relacionadas