是iter(list)每次返回一个新的Iterator吗?

时间:2019-01-09 06:35:01

标签: python python-3.x

当我测试python Iterator时,得到了一个非常奇怪的结果。

l = [1, 2, 3, 4, 5]

iterator = iter(l)
print(iterator)
iterator = iter(l)
print(iterator)
iterator = iter(l)
print(iterator)
iterator = iter(l)
print(iterator)

输出:

<list_iterator object at 0x10eebf748>
<list_iterator object at 0x10ef18eb8>
<list_iterator object at 0x10eebf748>
<list_iterator object at 0x10ef18eb8>

似乎我调用了iter() 4次,但依次却只能得到2个不同的Iterator对象。

我叫了6次,还得到2个不同的物体。

我同时在以下两项上进行了测试:
达尔文上的Python 3.7.1 [Clang 10.0.0(clang-1000.11.45.5)]
Linux上的Python 3.6.5 [GCC 4.8.5 20150623(Red Hat 4.8.5-16)]
并获得相似的结果。

为什么iter()依次返回2个对象?

IMO,每次我从iter()调用generator时,都会得到相同的Iterator对象。相反,从Iterator调用iter()时,我将得到一个新的list对象。
看来这是错误的,但是正确的答案是什么?

0 个答案:

没有答案