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)
next(iter(x))
Run Code Online (Sandbox Code Playgroud)
相当于
it = iter(x)
next(it)
Run Code Online (Sandbox Code Playgroud)
因此,在第二种情况下,您每次都会重复这两条指令,其中您首先iterator从 中创建一个iterable,并应用next()每次获取第一个元素的函数。
所以你永远不会消耗它,而是每次都重新创建它。