Ein Iterator ist ein Objekt, das eine zählbare Anzahl von Werten enthält.
Iteratoren sind iterierbare Objekte, was bedeutet, dass Sie über alle Werte iterieren können.
Technisch gesehen ist ein Iterator in Python ein Objekt, das das Iteratorprotokoll implementiert, das die Methoden iter() und next() enthält.
Listen, Tupel, Wörterbücher und Mengen sind alle iterierbare Objekte. Es handelt sich um iterierbare Container, aus denen Sie einen Iterator erhalten können.
Alle diese Objekte verfügen über iter()-Methoden zum Abrufen von Iteratoren:
Instanzen
Gib einen Iterator aus einem Tupel zurück und drucke jeden Wert aus:
mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
Run Instances
apple banana cherry
Even Strings Beide sind iterierbare Objekte und können zurückgegeben werden Iteratoren:
Instanzen
Strings sind ebenfalls iterierbare Objekte, die eine Reihe von Zeichen enthalten:
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
Laufende Instanzen
b a n a n a
Wir können auch die for-Schleife verwenden, um das iterierbare Objekt zu durchlaufen:
Instanz
iteriert den Wert des Tupels:
mytuple = ("apple", "banana", "cherry") for x in mytuple: print(x)
führt die Instanz aus
python_iterator_loop_1.py apple banana cherry
Instanz
iteriert die Zeichen in der Zeichenfolge:
mystr = "banana" for x in mystr: print(x)
führt die Instanz aus
python_iterator_loop_2.py b a n a n a
Tipps: Die for-Schleife erstellt tatsächlich einen ator-Objekt und führt die next()-Methode für jede Schleife aus.
Um ein Objekt/eine Klasse als Iterator zu erstellen, müssen Sie die Methoden iter() und next() für das Objekt implementieren.
Wie Sie im Kapitel „Python-Klassen/Objekte“ gelernt haben, verfügen alle Klassen über eine Funktion namens init(), mit der Sie beim Erstellen eines Objekts einige Initialisierungen durchführen können. Die Methode
iter() funktioniert ähnlich, Sie können Operationen (Initialisierung usw.) ausführen, müssen aber immer das Iteratorobjekt selbst zurückgeben. Mit der Methode
next() können Sie auch Operationen ausführen und müssen das nächste Element in der Sequenz zurückgeben.
Instanz
Erstellen Sie einen Iterator, der Zahlen zurückgibt, beginnend bei 1. Jede Sequenz erhöht sich um 1 (gibt 1, 2, 3, 4, 5 usw. zurück):
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))
Führen Sie die Instanz aus
python_iterator_create_1.py 1 2 3 4 5
Wenn Sie genügend next()-Anweisungen haben oder diese in einer for-Schleife verwenden, wird das obige Beispiel ewig weitergehen.
Um zu verhindern, dass die Iteration ewig dauert, können wir die StopIteration-Anweisung verwenden.
In der next()-Methode können wir eine Beendigungsbedingung hinzufügen, um einen Fehler auszulösen, wenn die Iteration die angegebene Anzahl von Malen abgeschlossen hat:
Die Instanz
stoppt nach 20 Iterationen:
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): if self.a <= 20: x = self.a self.a += 1 return x else: raise StopIteration myclass = MyNumbers() myiter = iter(myclass) for x in myiter: print(x)
Führen Sie die Instanz aus
python_iterator_create_2.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Das obige ist der detaillierte Inhalt vonWas ist ein Python-Iterator und wie wird er verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!