¿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?
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] = l
línea de código. ¿Por qué ocurre esto? ¿Cómo puedo arreglarlo?
j
es 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 ( None
en 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 list
objeto no le permitirá asignar un valor a un índice que no existe.
Hacer j.append(l)
en lugar de j[k] = l
y evitar k
en absoluto.