Erstellen eines Iterators in Python
Das Erstellen eines Iterators in Python erfordert die Implementierung des Iteratorprotokolls, das zwei wesentliche Methoden angibt: __iter__() und __nächste__(). Diese Methoden definieren, wie Objekte initialisiert und durch eine Folge von Werten iteriert werden können.
Das Iterator-Protokoll verstehen
In __iter__() wird das Iteratorobjekt zurückgegeben, d. h Wird normalerweise implizit am Anfang von Schleifen aufgerufen. __next__() ist die primäre Methode, die den nächsten Wert in der Sequenz zurückgibt. Für Python 2-Benutzer ist diese Methode als next() bekannt. Wenn alle Werte erschöpft sind, löst __next__() eine StopIteration-Ausnahme aus, die von Schleifenkonstrukten erfasst wird, um die Iteration zu beenden.
Ein Beispiel: Der Counter Iterator
Lassen Sie uns einen einfachen erstellen Zähleriterator, der Werte innerhalb eines angegebenen Bereichs generiert:
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)
Dies führt zu Folgendem Ausgabe:
3 4 5 6 7 8
Generatoren für Iteratoren verwenden
Generatoren bieten einen alternativen Mechanismus zum Erstellen von Iteratoren. Generatorfunktionen liefern Werte nacheinander und implementieren so effektiv das Iteratorprotokoll.
def counter(low, high): current = low while current < high: yield current current += 1 # Usage: for c in counter(3, 9): print(c)
Der obige Code erzeugt die gleiche Ausgabe wie die Counter-Klasse.
Zusätzliche Ressourcen
Ein umfassendes Verständnis von Iteratoren finden Sie in Ressourcen wie dem Artikel „Iteratoren und einfache Generatoren“ von David Mertz.
Das obige ist der detaillierte Inhalt vonWie erstelle und verwende ich Iteratoren in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!