244 votes

IndexError: affectation de la liste d'index out of range

Veuillez considérez le code suivant:

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

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

print j

La sortie (Python 2.6.6 sur Win 7 32-bit) est:

> Traceback (most recent call last): 
>     j[k] = l IndexError: list assignment index out of range

Je suppose que c'est quelque chose de simple que je ne comprends pas. Quelqu'un peut-il clair?

389voto

Steve Mayne Points 9055

j est une liste vide, mais vous êtes de tenter d'écrire à l'élément [0] dans la première itération, qui n'existe pas encore.

Essayez ce qui suit au lieu de cela, ajouter un nouvel élément à la fin de la liste:

for l in i:
    j.append(l)

63voto

Rsh Points 939

Votre autre option est d'initialiser j:

j = [None]*max(i)

29voto

khachik Points 12589

N' j.append(l) au lieu de j[k] = l et d'éviter k .

18voto

Jason Sundram Points 3237

Pour l'exemple que vous avez posté, vous pouvez également utiliser une compréhension de liste:

j = [l for l in i]

ou tout simplement faire une copie:

j = i[:]

11voto

Tom Points 676
j.append(l)

Également éviter d'utiliser des bas-de-casse "L"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X