liste index hors plage Python

Les IndexErrors sont l’un des types d’erreurs d’exécution les plus courants en Python. Ils sont déclenchés lorsque vous essayez d’accéder à une valeur d’index dans une liste Python qui n’existe pas. Dans la plupart des cas, les erreurs d’index sont faciles à résoudre. Vous avez juste besoin de faire un peu de débogage.

Dans ce tutoriel, nous allons parler de "indexerror : index de liste hors plage‚" Erreur. Nous allons discuter de son fonctionnement et passer en revue un exemple de scénario dans lequel cette erreur est présente afin que nous puissions la résoudre.

Le problème : indexerror : list index out of range

Comme toujours, le meilleur endroit pour commencer est de lire et de décomposer notre message d’erreur :

Ce message d’erreur nous indique que nous essayons d’accéder à une valeur dans un tableau qui n’a pas de position d’index.

En Python, les numéros d’index commencent à 0. Voici un tableau Python typique :

Ce tableau contient trois valeurs. Le premier élément de la liste, Java, a la valeur d’index 0. Chaque valeur suivante a un numéro d’index 1 supérieur au précédent. Par exemple, la valeur d’index de Python est 1.

Si nous essayons d’accéder à un élément à la position d’index 3, une erreur sera renvoyée. Le dernier élément de notre tableau a la valeur d’index 2.

Exemples de scénarios (et de solutions)

Il existe deux scénarios courants dans lesquels l’"index de liste hors limites‚" une erreur est signalée :

81 % des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi dans le secteur technologique après avoir assisté à un bootcamp. Soyez jumelé à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Parcourons les deux de ces scénarios.

Les listes sont indexées à partir de zéro

Le programme suivant imprime toutes les valeurs dans une liste appelée "programming_languages‚" au shell Python :

Tout d’abord, nous avons déclaré deux variables. La variable "langages_de_programmation" stocke la liste des langues que nous voulons imprimer sur la console. La variable "compte" est utilisé pour suivre le nombre de valeurs que nous avons imprimées sur la console.

Ensuite, nous avons déclaré une boucle while. Cette boucle imprime la valeur des "programming_languages‚" à la position d’index stockée dans "count". Ensuite, il ajoute 1 au "count" variable. Cette boucle continue jusqu’à ce que la valeur de "count‚" n’est plus inférieur ou égal à la longueur des "langages_de_programmation‚" list.

Essayons d’exécuter notre code :

Toutes les valeurs de notre liste sont imprimées sur la console mais une erreur est générée. Le problème est que notre boucle continue jusqu’à ce que la valeur de "count" n’est plus inférieur ou égal à la longueur des "programming_languages". Cela signifie que sa dernière itération vérifiera :

Cette valeur n’existe pas. Cela provoque une IndexError. Pour résoudre ce problème, nous pouvons changer notre opérateur de <= à <. Cela garantira que notre liste n’itére que jusqu’à ce que la valeur de "count‚" n’est plus inférieur à la longueur des "langages_de_programmation". Faisons cette révision :

Notre code renvoie :

Nous avons résolu l’erreur avec succès ! Notre boucle n’essaie plus d’afficher les langages de programmation[3]. Il s’arrête lorsque la valeur de "count‚" est égal à 3 car 3 n’est pas inférieur à la longueur de "programming_languages‚".

Oubliez d’utiliser range()

Lorsque vous parcourez une liste de nombres, il est facile d’oublier d’inclure un instruction range(). Si vous accédez aux éléments de cette liste, une erreur peut se produire.

Considérez le code suivant :

Ce code doit imprimer toutes les valeurs à l’intérieur du tableau "ages". Ce tableau contient les √¢ges des élèves d’une classe de collège. Exécutons notre programme et voyons ce qui se passe :

Une erreur est déclenchée éd. Ajoutons une instruction print dans notre boucle pour voir la valeur de "age" à chaque itération pour voir ce qui s’est passé :

Notre code renvoie :

Le premier √¢ge, 9, est imprimé sur la console. Cependant, la valeur de "√¢ge" est une valeur réelle de "√¢ges". Ce n’est pas un numéro d’index. Sur le "print(ages[age])" ligne de code, nous essayons d’accéder à un √¢ge par son numéro d’index.

Lorsque nous exécutons notre code, il vérifie : ages[9]. La valeur de "√¢ge" est de 9 dans la première itération. Il n’y a aucun article dans nos "√¢ges" list avec cette valeur.

Pour résoudre ce problème, nous pouvons utiliser une instruction range() pour parcourir notre liste d’√¢ges :

Laissez-nous réexécuter notre code :

"Python.Engineering est entré dans ma vie quand j’en avais le plus besoin et m’a rapidement aidé à me joindre à un bootcamp. Deux mois après avoir obtenu mon diplôme, j’ai trouvé le travail de mes rêves qui aligné avec mes valeurs et mes objectifs dans la vie !"

Vénus, ingénieur logiciel chez Rockbot

Toutes les valeurs des "√¢ges&rdquo ; array sont imprimés sur la console. L’instruction range() crée une liste de nombres dans une plage particulière. Dans ce cas, la plage [0, 1, 2] est créée. Ces nombres peuvent ensuite être utilisés pour accéder aux valeurs en "√¢ges" par leur numéro d’index.

Alternativement, nous pourrions utiliser une boucle "for‚Ķin" sans utiliser l’indexation :

Ce code renvoie :

Notre code n’essaie pas d’accéder aux valeurs par index du tableau "ages". Au lieu de cela, notre boucle parcourt chaque valeur du tableau "ages‚" et l’imprime sur la console.



Conclusion

Des erreurs d’index se produisent tout le temps. Pour résoudre le "indexerror : index de liste hors plage" erreur, vous devez vous assurer que vous n’essayez pas d’accéder à un élément inexistant dans une liste.

Si vous utilisez une boucle pour accéder à un élément, assurez-vous que cette boucle prend en compte le fait que les listes sont indexées à partir de zéro. Si cela ne résout pas le problème, assurez-vous que vous utilisez range() pour accéder à chaque élément par sa valeur d’index.

Maintenant vous êtes prêt à résoudre le "indexerror : index de liste hors plage" erreur comme un expert Python !