Maison > développement back-end > Tutoriel Python > Comment créer des itérateurs personnalisés en Python en utilisant `__iter__` et `__next__` ?

Comment créer des itérateurs personnalisés en Python en utilisant `__iter__` et `__next__` ?

Patricia Arquette
Libérer: 2024-12-17 14:56:17
original
854 Les gens l'ont consulté

How to Build Custom Iterators in Python Using `__iter__` and `__next__`?

Création d'itérateurs de base en Python

Supposons que vous ayez une classe qui encapsule une collection de valeurs et que vous souhaitiez créer un itérateur qui vous permet pour accéder à ces valeurs de manière séquentielle.

Pour créer un itérateur, implémentez le protocole itérateur, qui nécessite de définir deux méthodes :

1. __iter__() : Initialise et renvoie l'objet itérateur lui-même.

2. __next__() : Renvoie la valeur suivante dans la séquence ou déclenche StopIteration s'il n'y a plus de valeurs.

Exemple d'itérateur :

Considérez la classe suivante avec une liste de valeurs :

class Example:
    def __init__(self, values):
        self.values = values

    # __iter__ returns the iterable itself
    def __iter__(self):
        return self

    # __next__ returns the next value and raises StopIteration
    def __next__(self):
        if len(self.values) > 0:
            return self.values.pop(0)
        else:
            raise StopIteration()
Copier après la connexion

Utilisation :

Avec cet itérateur, vous pouvez parcourir les valeurs de la classe Exemple :

e = Example([1, 2, 3])
for value in e:
    print("The example object contains", value)
Copier après la connexion

Ceci imprimera :

The example object contains 1
The example object contains 2
The example object contains 3
Copier après la connexion

Itérateur Personnalisation :

Comme le montre l'exemple ci-dessus, la méthode next de l'itérateur peut contrôler la façon dont les valeurs sont récupérées et renvoyées, offrant une plus grande flexibilité pour les itérateurs personnalisés.

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