首页 > 后端开发 > Python教程 > 为什么我不能对迭代器进行两次迭代?

为什么我不能对迭代器进行两次迭代?

Linda Hamilton
发布: 2024-12-21 02:26:09
原创
836 人浏览过

Why Can't I Iterate Over an Iterator Twice?

为什么可迭代对象不能迭代两次

在处理迭代器和可迭代对象时,理解它们的消耗性质至关重要。在Python中,迭代器只能被使用一次。这意味着一旦你迭代一个迭代器,它就会耗尽并且不能再次使用。

考虑以下代码:

def test(data):
    for row in data:
        print("first loop")
    for row in data:
        print("second loop")
登录后复制

如果 data 是一个非空迭代器(例如,列表迭代器或生成器表达式),代码将多次打印“第一个循环”,但永远不会打印“第二个循环”。这是因为迭代器在第一个循环期间已被消耗。

其他形式的迭代也会出现同样的问题,例如 list/set/dict 推导式、调用 list()、sum() 或 reduce () 等等。

但是,如果数据是另一个可迭代对象,例如列表或范围(它们是序列),则两个循环都将按预期执行,打印“第一个循环”并每个元素的“第二个循环”。这是因为这些可迭代对象可以迭代多次。

重申一下,在使用迭代器时,记住它们的单次消耗性质很重要。要重用数据,请考虑将元素保存到列表或使用 itertools.tee() 创建独立的迭代器。

以上是为什么我不能对迭代器进行两次迭代?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板