AttributeError: el objeto ‘str’ no tiene atributo ‘append’

>>> myList[1] 'from form' >>> myList[1].append(s) Traceback (most recent call last): File "", line 1, in  myList[1].append(s) AttributeError: 'str' object has no attribute 'append' >>> 

¿Por qué myList[1] se considera un objeto 'str' ? mList[1] devuelve el primer elemento de la lista 'from form' pero no puedo adjuntar al elemento 1 de la lista myList . Gracias.

Edit01:

@pyfunc: Gracias por la explicación; Ahora entiendo.

Necesito tener una lista de listas; así que ‘desde la forma’ debería ser una lista. Hice esto (corríjalo si no es la forma correcta):

 >>> myList [1, 'from form', [1, 2, 't']] >>> s = myList[1] >>> s 'from form' >>> s = [myList[1]] >>> s ['from form'] >>> myList[1] = s >>> myList [1, ['from form'], [1, 2, 't']] >>> 

myList [1] es un elemento de myList y su tipo es string.

myList [1] es str, no puedes adjuntarlo. myList es una lista, deberías haberla agregado.

 >>> myList = [1, 'from form', [1,2]] >>> myList[1] 'from form' >>> myList[2] [1, 2] >>> myList[2].append('t') >>> myList [1, 'from form', [1, 2, 't']] >>> myList[1].append('t') Traceback (most recent call last): File "", line 1, in  AttributeError: 'str' object has no attribute 'append' >>> 

Si desea agregar un valor a myList, use myList.append(s) .

Las cuerdas son inmutables, no puedes añadirlas.

¿Por qué myList [1] se considera un objeto ‘str’?

Porque es una cuerda. ¿Qué más es 'from form' , si no es una cadena? (En realidad, las cadenas también son secuencias, es decir, se pueden indexar, cortar, iterar, etc. también, pero eso es parte de la clase str y no lo hace una lista o algo así).

mList[1] devuelve el primer elemento de la lista 'from form'

Si quieres decir que myList es 'from form' , no, no lo es. El segundo elemento (la indexación comienza en 0) es 'from form' . Esa es una gran diferencia. Es la diferencia entre una casa y una persona.

Además, myList no tiene que ser una list de su ejemplo de código corto, podría ser cualquier cosa que acepte 1 como índice, un dict con 1 como índice, una lista, una tupla, la mayoría de las demás secuencias, etc. Pero eso es irrelevante.

pero no puedo adjuntar al elemento 1 en la lista myList

Por supuesto que no, porque es una cadena y no se puede agregar a la cadena. Las cuerdas son inmutables. Puede concatenar (como en, “hay un nuevo objeto que consta de estas dos”) cadenas. Pero no se puede append (como en “este objeto específico ahora tiene esto al final”).

Lo que está tratando de hacer es agregar información adicional a cada elemento de la lista que ya creó para

  alist[ 'from form', 'stuff 2', 'stuff 3'] for j in range( 0,len[alist]): temp= [] temp.append(alist[j]) # alist[0] is 'from form' temp.append('t') # slot for first piece of data 't' temp.append('-') # slot for second piece of data blist.append(temp) # will be alist with 2 additional fields for extra stuff assocated with each item in alist