# Erreur Python - IndexError: list index out of range

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