Maison >développement back-end >Tutoriel Python >Comment créer et utiliser des itérateurs en Python ?

Comment créer et utiliser des itérateurs en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-29 17:33:11230parcourir

How Do I Create and Use Iterators in Python?

Créer un itérateur en Python

Construire un itérateur en Python nécessite d'implémenter le protocole itérateur, qui spécifie deux méthodes essentielles : __iter__() et __suivant__(). Ces méthodes définissent comment les objets peuvent s'initialiser et parcourir une séquence de valeurs.

Comprendre le protocole itérateur

Dans __iter__(), l'objet itérateur est renvoyé, qui est généralement appelé implicitement au début des boucles. __next__() est la méthode principale qui renvoie la valeur suivante dans la séquence. Pour les utilisateurs de Python 2, cette méthode est connue sous le nom de next(). Lorsque toutes les valeurs sont épuisées, __next__() déclenche une exception StopIteration, que les constructions en boucle capturent pour terminer l'itération.

Un exemple : le compteur itérateur

Créons un simple Itérateur de compteur qui génère des valeurs dans une plage spécifiée :

class Counter:
    def __init__(self, low, high):
        self.current = low - 1
        self.high = high

    def __iter__(self):
        return self

    def __next__(self): # Python 2: def next(self)
        self.current += 1
        if self.current < self.high:
            return self.current
        raise StopIteration

# Usage:
for c in Counter(3, 9):
    print(c)

Cela produira ce qui suit sortie :

3
4
5
6
7
8

Utilisation de générateurs pour les itérateurs

Les générateurs offrent un mécanisme alternatif pour créer des itérateurs. Les fonctions du générateur génèrent des valeurs une à la fois, implémentant efficacement le protocole de l'itérateur.

def counter(low, high):
    current = low
    while current < high:
        yield current
        current += 1

# Usage:
for c in counter(3, 9):
    print(c)

Le code ci-dessus produit le même résultat que la classe Counter.

Ressources supplémentaires

Pour une compréhension complète des itérateurs, reportez-vous à des ressources telles que l'article de David Mertz « Itérateurs et générateurs simples ».

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!

Déclaration:
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