Correction d'une erreur d'index lors de l'accès aux éléments de liste dans une boucle
Tenter d'accéder aux éléments d'une liste à l'aide d'un index dans une boucle peut parfois entraîner erreurs, telles que IndexError ou TypeError. Comprendre la structure de boucle correcte est essentiel pour résoudre ces problèmes.
Description de l'erreur :
Considérez le code suivant :
<code class="python">def sumAnArray(ar): theSum = 0 for i in ar: theSum = theSum + ar[i] return theSum</code>
Ce code vise pour additionner les valeurs d'une liste. Cependant, il génère une IndexError lors de son exécution.
Opération de boucle :
Lors de l'utilisation d'une boucle for avec un objet itérable comme une liste, la variable de boucle (i dans ce case) représente l’élément actuel de l’itérable. Dans le code donné, la boucle parcourt les éléments de ar, i prenant la valeur de chaque élément.
Analyse des erreurs :
Dans le code ci-dessus, l'erreur se produit lorsque essayer d'accéder à ar[i], qui tente de récupérer l'élément de ar correspondant à la valeur de i. Cependant, dans une boucle for avec un itérable, i représente l'élément lui-même, pas son index. Tenter d'indexer ar en utilisant i directement entraînera une IndexError si i est hors de portée (c'est-à-dire supérieur ou égal à la longueur de la liste).
Boucle correcte :
Pour résoudre cette erreur, la boucle doit être modifiée pour accéder correctement aux éléments de la liste :
<code class="python">for i in ar: theSum = theSum + i</code>
Cette version parcourt les éléments de la liste et ajoute la valeur de chaque élément à la somme, en évitant l'index -erreurs liées.
Solution alternative :
Une approche alternative pour parcourir les éléments d'une liste et y accéder par index consiste à utiliser une plage au lieu de parcourir la liste lui-même :
<code class="python">for i in range(len(ar)): theSum = theSum + ar[i]</code>
Cette approche garantit que i prend toutes les valeurs d'index valides pour ar, évitant ainsi les erreurs d'indexation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!