Wir werden in diesem Artikel über den Python -Iterator diskutieren. Iterator ist ein Objekt mit Zustand und erinnert sich, wo es ist und wann es iteriert. Es gibt das einzelne Objekt zurück. Es verwendet die Methoden iter () und next (). Dies wird verwendet, um die Schleifen, Verständnisse und Pythongeneratoren zu bilden.
Konvertieren Sie jede Sequenz mit der folgenden Syntax in Iterator:
Iter (Sequenz)Um auf das nächste Element zuzugreifen, wird die nächste () Funktion verwendet. Jedes Objekt in Python, das die beiden vorherigen Methoden unterstützt. Um dies zu überprüfen, führen Sie die eingebaute Methode Dir () auf Objekt aus.
Beispiel: Print (Dir (Liste))
Hier ist die Liste kein Iterator, da sie nicht die Methode „__Next__“ hat.
Wenn wir versuchen, auf die nächsten Elemente zuzugreifen, erhalten wir die Ausnahme wie folgt:
Um es als Iterator zu konvertieren, übergeben Sie die Liste an die ITER -Methode, wie im folgenden gezeigt. Danach sehen wir die Methode "__next__".
Unterschied zwischen Iterator und Iterbar
Iterbare bedeutet, dass wir die Werte wie Liste, Tupel, String usw. überschreiten können. Alle Objekte haben eine iter () -Methode, mit der ein Iterator erhalten wird. Wir werden einige Beispiele sehen, um es besser zu verstehen:
Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | nums = [1,2,3,4,5] numsiderator = iter (nums) #Same als numsiderator = nums.__iter __ () # Innen wird es __iter__ Dunder -Methode nennen Drucken (nächstes (Numsiderator)) # Zugriff auf das erste Element Drucken (nächstes (Numsiderator)) # Zugriff auf das 2. Element Druck (nächstes (Numsiderator)) # Zugriff auf das 3. Element und so weiter… Druck (Weiter (Numsiderator)) Druck (Weiter (Numsiderator)) Druck (Weiter (Numsiderator)) |
Wenn wir das Ende der Liste erreichen, erhöht es einen Stopperationsfehler.
Notiz: Alles, was mit dem doppelten Unterstrich beginnt und endet mit dem doppelten Unterstrich in Python, wird als Dunder -Methode bezeichnet.
Anwendungsfall von Iteratoren
Beispiel 1:
Wir drucken jedes Zeichen mit der for -Schleife.
1 2 3 4 5 | S = "Guten Morgen" für char in s: Druck (char) |
Beispiel 2:
Wir drucken die gleiche Zeichenfolge mit den Iteratoren.
1 2 3 4 5 6 7 8 9 10 11 | S = "Guten Morgen" word = iter (s) während wahr: versuchen: item = next (word) Druck (Artikel) außer Stoppitation: brechen |
Beispiel 3:
Um unsere eigene Reichweite zu erstellen, gibt die Bereichsfunktion den Wertebereich von Start bis Ende (exklusiv).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Klasse Myrange: def __init __ (Selbst, Start, Stopp): selbst.Val = Start selbst.Stop = Stopp def __iter __ (selbst): Rückkehr selbst Def __Next __ (Selbst): Wenn Selbst.val> = self.stoppen: Stopitation erhöhen Strom = Selbst.val selbst.Val += 1 Return Current nums = myrange (1,5) Druck (nächste (NUMS)) Druck (nächste (NUMS)) Druck (nächste (NUMS)) Druck (nächste (NUMS)) Druck (nächste (NUMS)) |
Wir schreiben die vorherige Bereichsfunktion mit dem Generator.
Beispiel 4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Def My_Range (Start, Ende): Strom = Start während aktuell < end: Renditenstrom Strom += 1 nums = my_range (1,5) Druck (nächste (NUMS)) Druck (nächste (NUMS)) Druck (nächste (NUMS)) Druck (nächste (NUMS)) |
Oder wir können Folgendes anrufen, das die gleiche Ausgabe erzeugt wie das vorherige Beispiel.
1 2 3 | für num in nums: drucken (num) |
Abschluss
Der Iterator muss nicht enden, solange der Wert da ist. Es hält uns den Wert. Es holt jeweils einen Wert. Es ist sehr nützlich, wenn Sie die Speicherprogramme schreiben, bei denen wir viele Werte haben, die wir nicht in Erinnerung stellen können, wenn wir sie in eine Liste oder ein Tupel einfügen. Wir können die Ressource damit speichern.