Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么';t next(iter(x))前进到下一个iter?_Python_Iterator_Iteration - Fatal编程技术网

Python 为什么';t next(iter(x))前进到下一个iter?

Python 为什么';t next(iter(x))前进到下一个iter?,python,iterator,iteration,Python,Iterator,Iteration,当我将L分配给iter(x),然后下一步(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) 但当我手动编写next(iter(x))来迭代x

当我将L分配给iter(x),然后下一步(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)
但当我手动编写next(iter(x))来迭代x列表时,它不起作用:

next(iter(x))
1
>>> next(iter(x))
1
>>> next(iter(x))
1

在Python中,迭代器是在创建之后使用完的对象。在第一个示例中,您创建了一个迭代器并提取其元素,直到其耗尽。在第二个示例中,每次创建一个新的迭代器,提取它的第一个元素,然后丢弃它(通过垃圾收集器)

相当于

it = iter(x)
next(it)
因此,在第二种情况下,每次重复这两条指令,首先从
iterable
创建
iterator
,然后每次获取第一个元素时应用
next()
函数。
因此,您永远不会使用它,而是每次重新创建它。

那么
iter()
每次都会创建一个新的iter
it = iter(x)
next(it)