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")
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!