首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在列表"a“上重复调用"iter(a).next()”,不会返回超过第一个列表项的内容?

为什么在列表"a“上重复调用"iter(a).next()”,不会返回超过第一个列表项的内容?
EN

Stack Overflow用户
提问于 2015-11-14 15:09:47
回答 1查看 3.7K关注 0票数 0

以下代码使我感到困惑:

代码语言:javascript
复制
>>> a
[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

next()总是返回0。那么,iter函数是如何工作的呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-14 15:10:26

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

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

代码语言:javascript
复制
>>> 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

我使用 function而不是调用iterator.next()方法;Python3将后者重命名为iterator.__next__(),但是next()函数将调用正确的‘拼写’,就像len()用于调用object.__len__一样。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33709805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档