Python für Schleifen- und Iteratorverhalten

Ich wollte verstehen, ein bisschen mehr über iterators, also bitte korrigieren Sie mich, wenn ich falsch bin.

Ein iterator ist ein Objekt, das einen Zeiger auf das nächste Objekt und liest sich wie ein Puffer oder stream (z.B. eine verkettete Liste). Sie sind besonders effizient, denn alle sagen Sie, was ist weiter von Referenzen anstelle von Indexierung.

Aber ich verstehe immer noch nicht warum ist das folgende Verhalten passiert:

In [1]: iter = (i for i in range(5))

In [2]: for _ in iter:
   ....:     print _
   ....:     
0
1
2
3
4

In [3]: for _ in iter:
   ....:     print _
   ....:     

In [4]: 

Nach einer ersten Schleife durch den iterator (In [2]) es ist, als ob es war, verbraucht und leer, so dass die zweite Schleife (In [3]) druckt nichts.

Allerdings habe ich nie einen neuen Wert zugewiesen, der iter variable.

Was passiert wirklich unter der Haube des for Schleife?

InformationsquelleAutor der Frage Matteo | 2015-04-02

Schreibe einen Kommentar