Python iter()函数如何工作?

Goi*_*Way -1 python iterator

以下代码让我困惑:

>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> zip(*([iter(a)]*2))
[(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)]
>>> iter(a)
<listiterator object at 0x7f3e9920cf50>
>>> iter(a).next()
0
>>> iter(a).next()
0
>>> iter(a).next()
0
Run Code Online (Sandbox Code Playgroud)

next()总是返回0.那么,该iter功能如何工作?

Mar*_*ers 8

您每次都在创建一个新的迭代器.每个新的迭代器从一开始就开始,它们都是独立的.

创建一次迭代器,然后遍历那个实例:

>>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a_iter = iter(a)
>>> next(a_iter)
0
>>> next(a_iter)
1
>>> next(a_iter)
2
Run Code Online (Sandbox Code Playgroud)

我使用的是next()函数而不是调用iterator.next()方法; Python 3将后者重命名为,iterator.__next__()next()函数将调用正确的'拼写',就像len()用来调用一样object.__len__.