Itérer sur des listes : comprendre le comportement de Python
En Python, lors de l'itération sur une liste et de la modification simultanée de son contenu, un comportement inattendu peut se produire. Considérez cet exemple simplifié :
<code class="python">x = [1,2,2,2,2] for i in x: x.remove(i) print(x) </code>
L'intention est de supprimer tous les éléments de la liste. Cependant, lors de l’exécution, deux éléments demeurent. Pourquoi cela se produit-il ?
Le piège de la modification pendant l'itération
Python dicte qu'il n'est pas recommandé de modifier une liste lors d'une itération. Lorsqu'un élément est supprimé d'une liste, la position de l'itérateur passe à l'élément suivant. Dans l'exemple, le premier élément est supprimé, déplaçant la position vers le deuxième élément. Cependant, comme le deuxième élément est toujours un « 2 », il sera ignoré lors de l'itération. Ce saut continue, laissant deux éléments « 2 ».
Résoudre le problème
Pour résoudre ce problème, Python fournit une technique permettant de copier efficacement une liste avant de l'itérer :
<code class="python">for i in x[:]: x.remove(i)</code>
Dans ce cas, l'opérateur slice [:] crée une copie de la liste originale. Cela garantit que l'itération se déroule comme prévu et que tous les éléments sont supprimés de la liste d'origine. N'oubliez pas que ce comportement s'applique à la modification des listes pendant l'itération, et non à l'ajout ou au remplacement d'éléments.
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!