为什么 next(iter(x)) 不前进到下一个可迭代对象?

Jas*_*son 8 python iteration iterator

我很困惑为什么当我将 L 分配给 iter(x),然后将 next(L) 分配给 x 列表时,迭代代码会起作用。如下所示:

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)
Run Code Online (Sandbox Code Playgroud)

但是当我手动编写 next(iter(x)) 来迭代 x 列表时,它不起作用:

next(iter(x))
1
>>> next(iter(x))
1
>>> next(iter(x))
1
Run Code Online (Sandbox Code Playgroud)

abc*_*abc 5

next(iter(x))
Run Code Online (Sandbox Code Playgroud)

相当于

it = iter(x)
next(it)
Run Code Online (Sandbox Code Playgroud)

因此,在第二种情况下,您每次都会重复这两条指令,其中您首先iterator从 中创建一个iterable,并应用next()每次获取第一个元素的函数。
所以你永远不会消耗它,而是每次都重新创建它。