当我把迭代器赋给变量时会发生什么

2024-09-24 22:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我定义了一个listI,它是iterable。如代码所示,迭代器将在调用\uUiter\uu9()方法时返回。但是当我调用它的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  

所以我做了些吹牛的事:)

^{pr2}$

有谁能告诉我这两种方法的区别吗?发送大量:)


Tags: of方法代码定义objectiterablewrappermethod
1条回答
网友
1楼 · 发布于 2024-09-24 22:30:28

每次调用__iter__时,都会得到一个新的迭代器。在第一个示例中,调用__iter__四次,因此得到了四个新的迭代器,并且对每个迭代器调用一次next,因此总是得到第一个值。在第二个例子中,您调用了一次__iter__,因此您只得到一个迭代器,并且在同一个迭代器上调用next四次,这样就得到了所有四个值。

相关问题 更多 >