Índice de lista de error fuera de rango en python simple para bucle

¿Puede alguien explicarme por qué esto para el bucle no funciona? Estoy tratando de usar algo como esto en otro progtwig para recorrer una lista usando esta N como parámetro.

N = [20,40,60,80] for j in N: print(j) for i in range(0,N[j]): print(i) 

¡Gracias por adelantado!

Estás fuera de rango, porque j está tomando los valores de los elementos de la matriz N, no del índice. Entonces, j no es 0, 1, 2, 3 sino 20, 40, 60, 80. Entonces, cuando alcanzas for i in range((0, N[j]) , estás pidiendo N [20 ], que está mucho más allá de la longitud de la lista N.

Podrías hacerlo:

 N = [20,40,60,80] for j in range(len(N)): # ^^^^^^^^^^^^^ print(j) for i in range(0,N[j]): print(i) 

podrías usar enumerar

 N = [20,40,60,80] for index, j in enumerate(N): print(j) for i in range(0,N[index]): print(i) 

Tratar:

 for i in range(0,j): 

En lugar de:

 for i in range(0,N[j]): 

Dado que N[j] accederá mucho más allá de lo que está en la lista, como N[80] , que no existe. Esta es la razón por la que obtiene un IndexError: list index out of range .

Para solucionar este problema, debe aplicar el range() en su bucle externo:

 for i in range(len(N)): print(i) for j in range(0, N[i]): print(j) 

Que solo mira los índices i de N cuando se aplica a range() en el bucle interno, en lugar de los elementos reales, que son mucho más grandes.

Si desea acceder a lo que realmente está en la lista con respecto a un índice, intente esto:

 N = [20,40,60,80] for i in range(len(N)): print(i, "->", N[i]) 

Qué salidas:

 0 -> 20 1 -> 40 2 -> 60 3 -> 80 

Si quieres solo los números:

 for number in N: print(number) 

Si quieres tanto el índice como el número de una manera más pythonica:

 for index, number in enumerate(N): print(index, "->", number) 

Qué salidas:

 0 -> 20 1 -> 40 2 -> 60 3 -> 80