Quiero insertar un elemento en una lista dentro de una lista. Me pregunto si alguien me puede mostrar.
list5 = [[], [(1,2,3,4), 2, 5]] print("1. list5", list5) list5.insert(0, (2,5,6,8)) print("2. list5", list5) Output: 1. list5 [[], [(1, 2, 3, 4), 2, 5]] 2. list5 [(2, 5, 6, 8), [], [(1, 2, 3, 4), 2, 5]]
Quiero:
2. list5 [[(2, 5, 6, 8)], [(1, 2, 3, 4), 2, 5]]
Desafortunadamente, un diccionario no funcionará.
El problema es que está intentando insertar como primer elemento de la lista, list5
, que es incorrecto. Debe acceder al primer elemento de la lista e insertarlo en esa lista. Esto se puede hacer usando el siguiente código
>>> list5 = [[], [(1,2,3,4), 2, 5]] >>> print("1. list5", list5) 1. list5 [[], [(1, 2, 3, 4), 2, 5]] >>> list5[0].insert(0, (2,5,6,8)) >>> print("2. list5", list5) 2. list5 [[(2, 5, 6, 8)], [(1, 2, 3, 4), 2, 5]]
El problema aquí es que la insert
crea un nuevo elemento en la lista a la que se aplica. Asi que
>>> list5 = [[], [(1,2,3,4), 2, 5]]
crea una lista con dos elementos, el primero de los cuales pasa a ser una lista con cero elementos:
>>> list5[0] ## []
Si luego llama list5.insert(0, foo)
, lo que sucederá es que foo
se inserta en la lista en la posición 0, y todo lo demás se transfiere (es decir, los elementos de la lista que tenían un índice de 0 o mayor cada uno obtener su índice aumentado en 1).
Lo que realmente desea hacer es insertar un elemento en la lista vacía en la posición 0 de list5
. Por lo tanto, debe acceder a esa lista y luego llamar a un método que agregue su elemento. Ya sea
>>> list5[0].append( (2,5,6,8) )
o
>>> list5[0].insert(0, (2,5,6,8) )
Hará el truco.