Python Iterator

Python Iterator

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

  1. Die für Schleifen verwendet Iteratoren im Hintergrund.

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
  1. Ein weiterer Anwendungsfall des Iterator.

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))
  1. Ein weiterer Anwendungsfall des Iterators sind Python -Generatoren. Generatoren sind eine normale Methode, die den Wert als Ausgang liefert und sich an den Zustand erinnert. Generatoren sind auch Iteratoren, aber die Methoden Dunder iter () und Next () werden automatisch erstellt.

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.