Description
L’erreur IndexError: list index out of range vient du langage Python et arrive lorsque l’on tente d’accéder à un élément d’une liste avec un indice qui se trouve en dehors de la plage d’indices valide. En Python, les indices de liste commencent à 0 et vont jusqu’à la longueur de la liste moins un.
ma_liste = [1, 2, 3, 4, 5]
print(ma_liste[5])
Ce code entraînera une erreur “IndexError: list index out of range” car l’indice 5 n’est pas valide pour une liste de longueur 5.
Pour éviter cette erreur, on peut vérifier que l’indice est inférieur à la taille totale de la liste.
ma_liste = [1, 2, 3, 4, 5]
indice = 5
if indice < len(ma_liste):
print(ma_liste[indice])
else:
print("L'indice est en dehors de la plage.")
Exemple d’erreur dans une boucle for
ma_liste = [1, 2, 3, 4, 5]
for indice in range(len(ma_liste) + 1):
print("Élément à l'indice", indice, "est", ma_liste[indice])
Dans cet exemple, la boucle for utilise la fonction range() pour générer des indices allant de 0 jusqu’à “longueur de ma_liste + 1” exclusivement. Les indices vont en l’occurrence de 0 à len(ma_liste). Lorsque la boucle tente d’accéder à l’élément à l’indice égal à la longueur de la liste, cela entraîne une erreur IndexError: list index out of range.
Pour éviter cette erreur, il faut corriger la borne supérieure de la fonction range():
ma_liste = [1, 2, 3, 4, 5]
for indice in range(len(ma_liste)):
print("Élément à l'indice", indice, "est", ma_liste[indice])
Exemple d’erreur dans une boucle while
ma_liste = [1, 2, 3, 4, 5]
indice = 0
while indice <= len(ma_liste):
print("Élément à l'indice", indice, "est", ma_liste[indice])
indice += 1
Dans ce code, la boucle while continue tant que l’indice est inférieur ou égal à la longueur de ma_liste. Etant donné que la plage d’indices possibles pour une liste va de 0 jusqu’à len(ma_liste) - 1, cette condition entraînera une erreur IndexError: list index out of range lors que la boucle va tenter d’accéder à l’indice égal à la longueur de la liste.
Pour corriger cette erreur, la condition de la boucle doit être indice < len(ma_liste):
ma_liste = [1, 2, 3, 4, 5]
indice = 0
while indice < len(ma_liste):
print("Élément à l'indice", indice, "est", ma_liste[indice])
indice += 1