Python Iterator
- Vorherige Seite Python-Vererbung
- Nächste Seite Python-Bereich
Python Iterator
Ein Iterator ist ein Objekt, das die zählbare Anzahl von Werten enthält.
Ein Iterator ist ein iterierbares Objekt, was bedeutet, dass Sie alle Werte durchsuchen können.
Technisch gesehen ist ein Iterator in Python ein Objekt, das das Iterator-Protokoll implementiert und Methoden enthält __iter__()
und __next__()
.
Iterator VS Iterierbares Objekt (Iterable)
Listen, Tuples, Dictionarys und Mengen sind iterierbare Objekte. Sie sind iterierbare Container, aus denen Sie Iteratoren (Iterator) erhalten können.
Alle diese Objekte haben Methoden, um Iteratoren zu erhalten iter()
Methode:
Beispiel
Geben Sie von dem Tuple einen Iterator zurück und drucken Sie jeden Wert aus:
mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) print(next(myit)) print(next(myit)) print(next(myit))
Selbst der String ist ein iterierbares Objekt und kann Iteratoren zurückgeben:
Beispiel
Der String ist ebenfalls ein iterierbares Objekt und enthält eine Reihe von Zeichen:
mystr = "banana" myit = iter(mystr) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit)) print(next(myit))
Durchsuchen Sie den Iterator
Wir können auch den for-Schleifenaufbau verwenden, um durch Iterierbare zu gehen:
Beispiel
Durchsuchen Sie die Werte des Tuples:
mytuple = ("apple", "banana", "cherry") for x in mytuple: print(x)
Beispiel
Durchsuchen Sie die Zeichen im String:
mystr = "banana" for x in mystr: print(x)
Hinweis:Der for-Schleifenaufbau erstellt tatsächlich ein Iterator-Objekt und führt für jede Schleifeniteration next()
Methode.
Erstellung eines Iterators
Um ein Objekt/Klasse als Iterator zu erstellen, muss das Objekt eine __iter__()
und __next__()
Methode.
Wie Sie im Kapitel 'Python-Klasse/Objekt' gelernt haben, haben alle Klassen eine Methode namens __init__()
Die Funktion, die es Ihnen ermöglicht, einige Initialisierungen bei der Erstellung von Objekten durchzuführen.
__iter__()
Methoden haben eine ähnliche Funktion, Sie können Aktionen (Initialisierung usw.) ausführen, müssen aber immer das Iteratorobjekt selbst zurückgeben.
__next__()
Methoden erlauben es Ihnen auch, Aktionen auszuführen und müssen das nächste Element der Sequenz zurückgeben.
Beispiel
Erstelle einen Iterator, der Zahlen zurückgibt, beginnt bei 1 und erhöht jede Sequenz 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))
StopIteration
Wenn Sie genügend next()
Anweisung verwenden oder in einem for-Schleifenaufbau verwenden, dann würde der obige Beispiel für immer weiterlaufen.
Um zu verhindern, dass die Iteration für immer weitergeht, können wir StopIteration
Anweisung.
in __next__()
In Methoden, können wir eine Stoppbedingung hinzufügen, um einen Fehler auszulösen, wenn die angegebene Anzahl an Iterationen abgeschlossen ist:
Beispiel
Stoppe 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)
- Vorherige Seite Python-Vererbung
- Nächste Seite Python-Bereich