Maison > développement back-end > Tutoriel Python > Pourquoi ne puis-je pas parcourir un itérateur deux fois ?

Pourquoi ne puis-je pas parcourir un itérateur deux fois ?

Linda Hamilton
Libérer: 2024-12-21 02:26:09
original
837 Les gens l'ont consulté

Why Can't I Iterate Over an Iterator Twice?

Pourquoi les itérables ne peuvent pas être itérés deux fois

Lorsqu'il s'agit d'itérateurs et d'itérables, il est crucial de comprendre leur nature de consommation. En Python, un itérateur ne peut être consommé qu'une seule fois. Cela signifie qu'une fois que vous parcourez un itérateur, celui-ci est épuisé et ne peut plus être utilisé.

Considérez le code suivant :

def test(data):
    for row in data:
        print("first loop")
    for row in data:
        print("second loop")
Copier après la connexion

Si les données sont un itérateur non vide (par exemple, un itérateur de liste ou expression génératrice), le code imprimera la « première boucle » plusieurs fois, mais la « deuxième boucle » ne sera jamais imprimée. En effet, l'itérateur a été consommé lors de la première boucle.

Le même problème se pose avec d'autres formes d'itération, telles que les compréhensions list/set/dict, les appels à list(), sum() ou réduire (), et ainsi de suite.

Cependant, si les données sont un autre itérable tel qu'une liste ou une plage (qui sont des séquences), les deux boucles s'exécuteront comme prévu, en imprimant "première boucle" et "seconde boucle" pour chaque élément. En effet, ces itérables peuvent être itérés plusieurs fois.

Pour réitérer, lorsque vous utilisez des itérateurs, il est important de se rappeler leur nature à consommation unique. Pour réutiliser les données, pensez à enregistrer les éléments dans une liste ou à utiliser itertools.tee() pour créer des itérateurs indépendants.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal