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
Libérer: 2024-12-29 17:33:11
original
219 Les gens l'ont consulté

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)
Copier après la connexion

Cela produira ce qui suit sortie :

3
4
5
6
7
8
Copier après la connexion

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)
Copier après la connexion

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!

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