Itérer deux fois sur des éléments non réutilisables : pourquoi et comment réinitialiser
Itérer deux fois sur une structure de données peut devenir un problème lorsqu'il s'agit d'itérateurs , qui ne peut être consommé qu’une seule fois. En Python, les itérateurs sont utilisés dans les itérateurs de liste, les expressions génératrices et divers autres objets.
Considérez le code suivant :
def test(data): for row in data: print("first loop") for row in data: print("second loop")
Lorsque les données sont un itérateur, comme un itérateur de liste ou un expression génératrice, le code affiche "première boucle" mais pas "seconde boucle" car l'itérateur a déjà été consommé dans la première boucle.
Pour comprendre pourquoi cela se produit, nous devons savoir comment fonctionnent les itérateurs. Un itérateur est un objet avec état qui parcourt une séquence de valeurs. Pendant l'itération, l'état de l'itérateur est mis à jour et lorsque la dernière valeur est renvoyée, l'itération s'arrête définitivement.
Par conséquent, lorsque nous essayons de parcourir le même itérateur une seconde fois, il lève immédiatement une exception StopIteration. , signalant qu'il n'y a plus de valeurs à récupérer. Cela termine effectivement la deuxième boucle.
Solutions de contournement pour la réutilisation des éléments non réutilisables
Pour réutiliser un itérateur, nous pouvons soit :
En comprenant la nature des itérateurs et en utilisant ces solutions de contournement, nous pouvons gérer efficacement les situations dans lesquelles nous devons parcourir les données plusieurs fois en Python.
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!