Heim > Backend-Entwicklung > Python-Tutorial > Wie erstelle ich benutzerdefinierte Iteratoren in Python mit „__iter__' und „__next__'?

Wie erstelle ich benutzerdefinierte Iteratoren in Python mit „__iter__' und „__next__'?

Patricia Arquette
Freigeben: 2024-12-17 14:56:17
Original
856 Leute haben es durchsucht

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

Erstellen grundlegender Iteratoren in Python

Angenommen, Sie haben eine Klasse, die eine Sammlung von Werten kapselt, und Sie möchten einen Iterator erstellen, der dies ermöglicht um nacheinander auf diese Werte zuzugreifen.

Um einen Iterator zu erstellen, implementieren Sie das Iteratorprotokoll, für das zwei definiert werden müssen Methoden:

1. __iter__(): Initialisiert das Iteratorobjekt selbst und gibt es zurück.

2. __next__(): Gibt den nächsten Wert in der Sequenz zurück oder löst StopIteration aus, wenn keine weiteren Werte vorhanden sind.

Beispiel-Iterator:

Betrachten Sie die folgende Klasse mit eine Liste von Werte:

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()
Nach dem Login kopieren

Verwendung:

Mit diesem Iterator können Sie über die Werte in der Beispielklasse iterieren:

e = Example([1, 2, 3])
for value in e:
    print("The example object contains", value)
Nach dem Login kopieren

Dies druckt:

The example object contains 1
The example object contains 2
The example object contains 3
Nach dem Login kopieren

Iterator Anpassung:

Wie im obigen Beispiel zu sehen ist, kann die next-Methode des Iterators steuern, wie Werte abgerufen und zurückgegeben werden, was eine größere Flexibilität für benutzerdefinierte Iteratoren bietet.

Das obige ist der detaillierte Inhalt vonWie erstelle ich benutzerdefinierte Iteratoren in Python mit „__iter__' und „__next__'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage