Heim > Backend-Entwicklung > Python-Tutorial > Warum kann ich einen Iterator nicht zweimal durchlaufen?

Warum kann ich einen Iterator nicht zweimal durchlaufen?

Linda Hamilton
Freigeben: 2024-12-21 02:26:09
Original
836 Leute haben es durchsucht

Why Can't I Iterate Over an Iterator Twice?

Warum Iterables nicht zweimal iteriert werden können

Beim Umgang mit Iteratoren und Iterables ist das Verständnis ihrer Konsumnatur von entscheidender Bedeutung. In Python kann ein Iterator nur einmal verwendet werden. Das bedeutet, dass, sobald Sie über einen Iterator iterieren, dieser erschöpft ist und nicht mehr verwendet werden kann.

Bedenken Sie den folgenden Code:

def test(data):
    for row in data:
        print("first loop")
    for row in data:
        print("second loop")
Nach dem Login kopieren

Wenn es sich bei data um einen nicht leeren Iterator handelt (z. B. a Listeniterator oder Generatorausdruck), der Code gibt „erste Schleife“ mehrmals aus, aber „zweite Schleife“ wird nie gedruckt. Dies liegt daran, dass der Iterator während der ersten Schleife verbraucht wurde.

Das gleiche Problem tritt bei anderen Iterationsformen auf, wie z. B. List/Set/Dict-Verständnissen, Aufrufen von list(), sum() oder Reduce () und so weiter.

Wenn es sich bei den Daten jedoch um andere iterierbare Daten handelt, beispielsweise um eine Liste oder einen Bereich (bei denen es sich um Sequenzen handelt), werden beide Schleifen wie erwartet ausgeführt und geben „erste Schleife“ und „zweite Schleife“ aus Schleife“ für jedes Element. Dies liegt daran, dass diese Iterables über mehrere Male iteriert werden können.

Um es noch einmal zu betonen: Bei der Verwendung von Iteratoren ist es wichtig, sich an deren Single-Consuming-Natur zu erinnern. Um die Daten wiederzuverwenden, sollten Sie die Elemente in einer Liste speichern oder itertools.tee() verwenden, um unabhängige Iteratoren zu erstellen.

Das obige ist der detaillierte Inhalt vonWarum kann ich einen Iterator nicht zweimal durchlaufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage