python 当我给变量赋值一个迭代器时会发生什么

k7fdbhmy  于 2023-05-27  发布在  Python
关注(0)|答案(1)|浏览(196)

我定义了一个列表i,它是可迭代的。如代码所示,当它调用__iter__()方法时,将返回一个迭代器。但是当我调用它的next()方法四次时,它只输出1四次,而不是1,2,3,4。

>>> i=[1,2,3,4]  
>>> i.__iter__  
<method-wrapper '__iter__' of list object at 0x04040378>  
>>> i.__iter__()  
<listiterator object at 0x040561F0>
>>> i.__iter__().next()  
1  
>>> i.__iter__().next()  
1  
>>> i.__iter__().next()  
1  
>>> i.__iter__().next()  
1

所以我做了一些打击:)

>>>ite=i.__iter__()
>>>ite.next()
1
>>>ite.next()
2
>>>ite.next()
3
>>>ite.next()
4
>>> ite.next()

Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    ite.next()
StopIteration

谁能告诉我这两种方法的区别?Tx a lot:)

jucafojl

jucafojl1#

每次调用__iter__,都会得到一个新的迭代器。在第一个例子中,你调用了__iter__四次,所以你得到了四个新的迭代器,你在每个迭代器上调用了next一次,所以你总是得到第一个值。在第二个例子中,调用__iter__一次,所以只得到一个迭代器,在同一个迭代器上调用next四次,所以得到所有四个值。

相关问题