Comment réparer une IndexError en Python


  • Français


  • Si vous utilisez Python, vous avez peut-être rencontré le IndexError erreur en réponse à un code que vous avez écrit. Les IndexError message en Python est une erreur d’exécution. Pour comprendre ce que c’est et comment y remédier, vous devez d’abord comprendre ce qu’est un index. Une liste Python (ou un tableau ou un dictionnaire) a un index. L’index d’un élément est sa position dans une liste. Pour accéder à un élément d’une liste, vous utilisez son index. Par exemple, considérez cette liste Python de fruits :

    fruits = ["apple", "banana", "orange", "pear", "grapes", "watermelon"]

    La plage de cette liste est 5, car un index en Python commence à 0.

    • pomme : 0
    • banane : 1
    • orange : 2
    • poire : 3
    • raisins: 4
    • pastèque : 5

    Supposons que vous deviez imprimer le nom du fruit pear de cette liste. Vous pouvez utiliser un simple print déclaration, ainsi que le nom de la liste et l’index de l’élément que vous souhaitez imprimer :

    >>> fruits = ["apple", "banana", "orange", "pear", "grapes", "watermelon"]
    >>> print(fruits[3])
    pear
    

    Qu’est-ce qui cause une IndexError en Python ?

    Que se passe-t-il si vous utilisez un numéro d’index en dehors de la plage de la liste ? Par exemple, essayez d’imprimer le numéro d’index 6 (qui n’existe pas) :

    >>> fruits = ["apple", "banana", "orange", "pear", "grapes", "watermelon"]
    >>> print(fruits[6])
    Traceback (most recent call last):
      File "", line 2, in 
    IndexError: list index out of range
     

    Comme prévu, vous obtenez IndexError: list index out of range en réponse.

    Comment réparer IndexError en Python

    La seule solution pour réparer le IndexError: list index out of range erreur consiste à s’assurer que l’élément auquel vous accédez à partir d’une liste se trouve dans la plage de la liste. Vous pouvez y parvenir en utilisant le range() une len() les fonctions.

    Les range() La fonction génère des nombres séquentiels, commençant par 0 par défaut et s’arrêtant au nombre précédant la valeur spécifiée :

    >>> n = range(6)
    >>> for i in n: 
            print(i)
    0
    1
    2
    3
    4
    5
    5

    Les len() fonction, dans le contexte d’une liste, renvoie le nombre d’éléments de la liste :

    >>> fruits = ["apple", "banana", "orange", "pear", "grapes", "watermelon"]
    >>> print(len(fruits))
    6

    Index de liste hors de portée

    En utilisant range() et len() ensemble, vous pouvez éviter les erreurs d’index. Les len() renvoie la longueur de la liste (6, dans cet exemple). En utilisant cette longueur avec range() devient range(6)qui renvoie les éléments aux index 0, 1, 2, 3, 4 et 5.

    fruits = ["apple", "banana", "orange", "pear", "grapes", "watermelon"]
    for i in range(len(fruits)):
        print(fruits[i])
    apple
    banana
    orange
    pear
    grapes
    watermelon

    Correction d’IndexError dans les boucles Python

    Si vous ne faites pas attention, des erreurs d’index peuvent se produire dans les boucles Python. Considérez cette boucle :

                                          
    >>> fruits = ["apple", "banana", "orange", "pear", "grapes", "watermelon"]
    >>> n = 0
    >>> while n <= len(fruits)
            print(fruits[n])
            n+=1
    apple
    banana
    orange
    pear
    grapes
    watermelon
    Traceback (most recent call last):
      File "", line 4, in 
    IndexError: list index out of range

    La logique semble raisonnable. Vous avez défini n en tant que variable de compteur, et vous avez défini la boucle pour qu’elle se produise jusqu’à ce qu’elle soit égale à la longueur de la liste. La longueur de la liste est de 6, mais sa plage est de 5 (car Python commence son index à 0). L’état de la boucle est n <= 6et donc lewhile boucle s’arrête lorsque la valeur de n est égal à 6 :

    • Quand n vaut 0 => pomme
    • Quand n vaut 1 => banane
    • Quand n vaut 2 => orange
    • Quand n vaut 3 => poire
    • Quand n vaut 4 => raisins
    • Quand n vaut 5 => pastèque
    • Lorsque n vaut 6 => IndexError : index de la liste hors plage

    Lorsque n est égal à 6, Python produit un IndexError: list index out of range Erreur.

    Solution

    Pour éviter cette erreur dans les boucles Python, utilisez uniquement l’opérateur < ("inférieur à"), arrêtant le while boucle au dernier index de la liste. Il s’agit d’un nombre de moins que la longueur de la liste :

                                           
    >>> fruits = ["apple", "banana", "orange", "pear", "grapes", "watermelon"]
    >>> n = 0
    >>> while n < len(fruits)
            print(fruits[n])
            n+=1
    apple
    banana
    orange
    pear
    grapes
    watermelon

    Il existe un autre moyen de résoudre ce problème également, mais je vous laisse le découvrir.

    Plus d’erreurs d’index Python

    La cause ultime de IndexError est une tentative d’accès à un élément qui n’existe pas dans une structure de données. En utilisant le range() et len() functions est une solution, et bien sûr gardez à l’esprit que Python commence à compter à 0, pas à 1.

    Source

    Houssen Moshinaly

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code