python - IndexError: lista el índice de asignación fuera de rango
indexerror list index out of range (8)
Por favor considere el siguiente código:
i = [1, 2, 3, 5, 8, 13]
j = []
k = 0
for l in i:
j[k] = l
k += 1
print j
La salida (Python 2.6.6 en Win 7 de 32 bits) es:
> Traceback (most recent call last):
> j[k] = l IndexError: list assignment index out of range
Supongo que es algo simple que no entiendo. ¿Alguien puede aclararlo?
Creo que el método de Python inserta lo que estás buscando;
Inserta el elemento x en la posición i.
array = [1,2,3,4,5]
array.insert(1,2)
print array
# prints [2,2,3,4,5]
Haga j.append(l)
lugar de j[k] = l
y evite k
en absoluto.
Para el ejemplo que publicó, también podría usar una lista de comprensión:
j = [l for l in i]
o simplemente haga una copia:
j = i[:]
Podría usar un diccionario (similar a una matriz asociativa) para j
i = [1, 2, 3, 5, 8, 13]
j = {} #initiate as dictionary
k = 0
for l in i:
j[k] = l
k += 1
print j
se imprimirá:
{0: 1, 1: 2, 2: 3, 3: 5, 4: 8, 5: 13}
Tu otra opción es inicializar j
:
j = [None]*max(i)
Una forma más:
j=i[0]
for k in range(1,len(i)):
j = numpy.vstack([j,i[k]])
En este caso, j
será una matriz numpy
j
es una lista vacía, pero está intentando escribir en el elemento [0]
en la primera iteración, que todavía no existe.
Pruebe lo siguiente en su lugar, para agregar un nuevo elemento al final de la lista:
for l in i:
j.append(l)
j.append(l)
También evite el uso de minúsculas "L" porque es fácil confundirse con 1