Ein Iterator ist ein Gegenstand, der eine zählbare Anzahl von Eigenschaften enthält.

Ein Iterator ist ein Element, das nachher iteriert werden kann, was impliziert, dass Sie durch jede einzelne der Eigenschaften navigieren können.

Technisch gesehen ist ein Iterator in Python ein Objekt, das das Iteratorprotokoll implementiert, das aus den Methoden __iter__() und __next__() besteht.

Iterator versus Iterierbar

Datensätze, Tupel, Wortreferenzen und Sets sind zum größten Teil iterierbare Elemente. Sie sind iterierbare Halter, von denen Sie einen Iterator erhalten können.

Jedes dieser Elemente verfügt über eine iter()-Technik, die verwendet wird, um einen Iterator zu erhalten:

Beispiel

Geben Sie einen Iterator aus einem Tupel zurück und drucken Sie jeden Wert aus:

Mytupel = (“Apfel”, “Banane”, “Kirsche”)
myit = iter(Mytupel)

drucken(next(myit))
drucken(next(myit))
drucken(next(myit))

Auch Zeichenfolgen sind iterierbare Objekte und können einen Iterator zurückgeben:

Beispiel

Strings sind ebenfalls iterierbare Objekte, die eine Folge von Zeichen enthalten:

mystr = “Banane”.
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))print(
next(myit))
print(next(myit))
print(next(myit))
print(next(myit))

Schleifen durch einen Iterator

Wir können auch eine for-Schleife verwenden, um durch ein iterierbares Objekt zu iterieren:

Beispiel

Iterieren Sie die Werte eines Tupels:

Mytupel = (“Apfel”, “Banane”, “Kirsche”)

für x in Mytupel:
 drucken(x)

Einen Iterator herstellen

Um einen Artikel/Klasse als Iterator zu erstellen, müssen Sie die Techniken __iter__() und __next__() zu Ihrem Artikel ausführen.

Wie Sie im Teil Python-Klassen/Elemente gelernt haben, haben alle Klassen eine Kapazität namens __init__(), die es Ihnen erlaubt, bei der Erstellung des Artikels einige Einführungen vorzunehmen.

Die __iter__()-Technik verhält sich vergleichbar, Sie können Aufgaben ausführen (instanziieren und so weiter.), sollten aber das Iteratorobjekt selbst konsistent wiederherstellen.

Mit der __next__()-Technik können Sie zusätzlich Aktivitäten durchführen und müssen Folgendes in der Gruppierung wiederherstellen

Beispiel

Erstellen Sie einen Iterator, der Zahlen zurückgibt, beginnend mit 1, und jede Sequenz wird um eins erhöht (gibt 1,2,3,4,5 usw. zurück):

Klasse MyNumbers: def __iter__(self): self.a = 1
 return self
  def __next__(selbst):
 x = selbst.a selbst.a += 1
 Rückgabe x

myclass = MeineNummern()
myiter = iter(meineKlasse)

drucken(next(myiter))
drucken(next(myiter))
drucken(next(myiter))


drucken(nächste(myiter))
drucken(nächste(myiter))

StopIteration

Das obige Modell würde immer dann angewendet werden, wenn Sie genug sofortige() Proklamationen hatten oder wenn es in einem for-Kreis verwendet wurde.

Um der Betonung vorzubeugen, mit der wir ständig weitermachen wollen, können wir die Erklärung der StopIteration verwenden.

In der Methode __next__() können wir eine Abbruchbedingung hinzufügen, um einen Fehler auszulösen, wenn die Iteration eine bestimmte Anzahl von Malen durchgeführt wird:

Beispiel

Stopp nach 20 Iterationen:

Klasse MyNumbers: def __iter__(self): self.a = 1
 return self
  def __next__(self):
 wenn self.a <= 20:
 x = self.a
 self.a += 1
 return x
 sonst: StopIteration
 erhöhen

myclass = MeineNummern()
myiter = iter(meineKlasse)

für x in myiter:
 drucken(x)