1. Iteratoren
Iterator ist ein Weg dazu Auf Sammlungselemente zugreifen. Das Iteratorobjekt beginnt mit dem Zugriff vom ersten Element der Sammlung, bis auf alle Elemente zugegriffen wurde. Iteratoren können nur vorwärts und nicht rückwärts gehen, aber das ist in Ordnung, da Menschen beim Iterieren selten rückwärts gehen. Darüber hinaus besteht einer der großen Vorteile von Iteratoren darin, dass nicht alle Elemente im Voraus für den gesamten Iterationsprozess vorbereitet werden müssen. Der Iterator berechnet ein Element nur, wenn er zu ihm iteriert, und davor oder danach existiert das Element möglicherweise nicht oder wird zerstört. Diese Funktion eignet sich besonders zum Durchsuchen einiger großer oder unendlicher Sammlungen, wie z. B. mehrerer G-Dateien
Funktionen:
Besucher müssen sich nicht um die interne Struktur des Iterators kümmern, sie müssen nur weiterhin den nächsten Inhalt über die next()-Methode abrufen
Kann nicht zufällig sein Um auf einen Wert in der Sammlung zuzugreifen, können Sie nur nacheinander von Anfang bis Ende darauf zugreifen
Sie können nicht zurückgehen, wenn Sie sich in der Mitte des Zugriffs befinden
Einfaches Durchlaufen relativ großer Datensätze und Einsparen von Speicher
>>> a = iter([1,2,3,4,5]) >>> a <list_iterator object at 0x101402630> >>> a.__next__() 1 >>> a.__next__() 2 >>> a.__next__() 3 >>> a.__next__() 4 >>> a.__next__() 5 >>> a.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
2. Generator
Wenn eine Funktion aufgerufen wird, gibt sie einen Iterator zurück, dann wird diese Funktion als Generator bezeichnet Funktion enthält Yield-Syntax, dann wird die Funktion zu einem Generator.
def func(): yield 1 yield 2 yield 3 yield 4
Im obigen Code ist func eine Funktion, die als Generator bezeichnet wird . Bei dieser Funktion erhält func( ) einen Iterator.
>>> temp = func() >>> temp.__next__() 1 >>> temp.__next__() 2 >>> temp.__next__() 3 >>> temp.__next__() 4 >>> temp.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
3. Beispiel
a Bereich
def xrange(n): start = 0 print(start) while True: if start > n : return yield start start += 1 obj = xrange(4) n1 = obj.__next__() n2 = obj.__next__() n3 = obj.__next__() n4 = obj.__next__() n5 = obj.__next__() n6 = obj.__next__() print(n1,n2,n3,n4,n5,n6)
b, verwenden Sie den Iterator, um auf den Bereich zuzugreifen
Das obige ist der detaillierte Inhalt vonPython-Grundlagen-Iteratoren und -Generatoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!