I am confused why the iteration code works when I assign L to iter(x), and then next(L) to iterate through the x list. As can be seen below:
x=[1,2,3,4,5]
>>> L=iter(x)
>>> next(L)
1
>>> next(L)
2
>>> next(L)
3
>>> next(L)
4
>>> next(L)
5
>>> next(L)
But when I manually write next(iter(x)) to iterate through the x list, it does not work:
next(iter(x))
1
>>> next(iter(x))
1
>>> next(iter(x))
1
next(iter(x))
is equivalent to
it = iter(x)
next(it)
Thus, in the second case you are repeating each time these two instructions in which you first create an iterator
from the iterable
, and you apply the next()
function getting each time the first element.
So you never consume it, but recreate it each time.
In Python, iterators are objects which get used up after they are created. In your first example you create an iterator and extract its elements until it is exhausted. In your second example you create a new iterator each time, extract its first element, and then discard it (via the garbage collector).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With