Heim >Backend-Entwicklung >Python-Tutorial >Was ist ein Python-Iterator und wie wird er verwendet?

Was ist ein Python-Iterator und wie wird er verwendet?

PHPz
PHPznach vorne
2023-05-12 13:19:061148Durchsuche

Python-Iteratoren

Ein Iterator ist ein Objekt, das eine zählbare Anzahl von Werten enthält.

Iteratoren sind iterierbare Objekte, was bedeutet, dass Sie über alle Werte iterieren können.

Technisch gesehen ist ein Iterator in Python ein Objekt, das das Iteratorprotokoll implementiert, das die Methoden iter() und next() enthält.

Iterator VS Iterable Object (Iterable)

Listen, Tupel, Wörterbücher und Mengen sind alle iterierbare Objekte. Es handelt sich um iterierbare Container, aus denen Sie einen Iterator erhalten können.

Alle diese Objekte verfügen über iter()-Methoden zum Abrufen von Iteratoren:

Instanzen

Gib einen Iterator aus einem Tupel zurück und drucke jeden Wert aus:

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

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

Run Instances

apple
banana
cherry

Even Strings Beide sind iterierbare Objekte und können zurückgegeben werden Iteratoren:

Instanzen

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

mystr = "banana"
myit = iter(mystr)

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

Laufende Instanzen

b
a
n
a
n
a

Iteratoren durchlaufen

Wir können auch die for-Schleife verwenden, um das iterierbare Objekt zu durchlaufen:

Instanz

iteriert den Wert des Tupels:

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)

führt die Instanz aus

python_iterator_loop_1.py
apple
banana
cherry

Instanz

iteriert die Zeichen in der Zeichenfolge:

mystr = "banana"

for x in mystr:
  print(x)

führt die Instanz aus

python_iterator_loop_2.py
b
a
n
a
n
a

Tipps: Die for-Schleife erstellt tatsächlich einen ator-Objekt und führt die next()-Methode für jede Schleife aus.

Iterator erstellen

Um ein Objekt/eine Klasse als Iterator zu erstellen, müssen Sie die Methoden iter() und next() für das Objekt implementieren.

Wie Sie im Kapitel „Python-Klassen/Objekte“ gelernt haben, verfügen alle Klassen über eine Funktion namens init(), mit der Sie beim Erstellen eines Objekts einige Initialisierungen durchführen können. Die Methode

iter() funktioniert ähnlich, Sie können Operationen (Initialisierung usw.) ausführen, müssen aber immer das Iteratorobjekt selbst zurückgeben. Mit der Methode

next() können Sie auch Operationen ausführen und müssen das nächste Element in der Sequenz zurückgeben.

Instanz

Erstellen Sie einen Iterator, der Zahlen zurückgibt, beginnend bei 1. Jede Sequenz erhöht sich 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))

Führen Sie die Instanz aus

python_iterator_create_1.py
1
2
3
4
5

StopIteration

Wenn Sie genügend next()-Anweisungen haben oder diese in einer for-Schleife verwenden, wird das obige Beispiel ewig weitergehen.

Um zu verhindern, dass die Iteration ewig dauert, können wir die StopIteration-Anweisung verwenden.

In der next()-Methode können wir eine Beendigungsbedingung hinzufügen, um einen Fehler auszulösen, wenn die Iteration die angegebene Anzahl von Malen abgeschlossen hat:

Die Instanz

stoppt 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)

Führen Sie die Instanz aus

python_iterator_create_2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Das obige ist der detaillierte Inhalt vonWas ist ein Python-Iterator und wie wird er verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen