IndexError: índice de asignación de lista fuera de rango

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?

j es una lista vacía, pero está intentando escribir en el elemento [0] en la primera iteración, que aún no existe.

En su lugar, intente lo siguiente para agregar un nuevo elemento al final de la lista:

 for l in i: j.append(l) 

Tu otra opción es inicializar j :

 j = [None] * len(i) 

Haga j.append(l) lugar de j[k] = l y evite k en absoluto.

También podría utilizar una lista de comprensión:

 j = [l for l in i] 

o haga una copia de él usando la statement:

 j = i[:] 
 j.append(l) 

También evite usar “L’s” en minúsculas porque es fácil confundirlas con 1’s.

Creo que el método de inserción de Python es 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 [1,2,2,3,4,5] 

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 

imprimirá:

 {0: 1, 1: 2, 2: 3, 3: 5, 4: 8, 5: 13} 

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

En Python con matriz solo se puede agregar y agregar un elemento a la matriz.