¿Por qué este código iterativo de crecimiento de listas da IndexError: índice de asignación de lista fuera de rango? ¿Cómo puedo agregar (añadir) elementos repetidamente a una lista?

Resuelto Vladan asked hace 13 años • 10 respuestas

Intenté escribir algún código como:

i = [1, 2, 3, 5, 8, 13]
j = []
k = 0

for l in i:
    j[k] = l
    k += 1

Pero recibo un mensaje de error que dice IndexError: list assignment index out of range, refiriéndose a la j[k] = llínea de código. ¿Por qué ocurre esto? ¿Cómo puedo arreglarlo?

Vladan avatar Apr 14 '11 01:04 Vladan
Aceptado

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

Pruebe lo siguiente para agregar un nuevo elemento al final de la lista:

for l in i:
    j.append(l)

Por supuesto, nunca harías esto en la práctica si todo lo que quisieras hacer fuera copiar una lista existente. Simplemente harías:

j = list(i)

Alternativamente, si desea utilizar la lista de Python como una matriz en otros lenguajes, puede crear previamente una lista con sus elementos establecidos en un valor nulo ( Noneen el ejemplo siguiente) y, luego, sobrescribir los valores en posiciones específicas:

i = [1, 2, 3, 5, 8, 13]
j = [None] * len(i)
#j == [None, None, None, None, None, None]
k = 0

for l in i:
   j[k] = l
   k += 1

Lo que hay que tener en cuenta es que un listobjeto no le permitirá asignar un valor a un índice que no existe.

Steve Mayne avatar Apr 13 '2011 18:04 Steve Mayne

Hacer j.append(l)en lugar de j[k] = ly evitar ken absoluto.

khachik avatar Apr 13 '2011 18:04 khachik