您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

对它执行一些操作后,Python迭代器为空

对它执行一些操作后,Python迭代器为空

这正是迭代器的工作方式。它们被设计为一次只生成一次动态数据,而不再需要一次。如果要第二次获取数据,则必须将所有迭代的数据保存到另一个列表中,或者再次启动迭代器。如果您需要读取文件或做其他烦人的事情来重新获得该迭代器,则最好在生成数据时将其存储在列表中。

>>> numbers = ('1','2','3','4','5')
>>> ints = [x for x in map(int, numbers)]
>>> print(list(ints))
[1, 2, 3, 4, 5]
>>> print(list(ints))
[1, 2, 3, 4, 5]

https://docs.python.org/2/library/stdtypes.html#iterator- types

该协议的目的是,一旦迭代器的next()方法引发StopIteration,它将在后续调用中继续这样做。不遵守此属性的实现被视为已损坏。(在Python 2.3中添加了此约束;在Python 2.2中,根据此规则破坏了各种迭代器。)

我应该注意,我运行了您在Python 2.4.3上给出的确切代码,并且每次都打印出列表。我想这是与版本有关的事情。

python 2022/1/1 18:40:10 有273人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶