Python:list(过滤器对象)清空对象[重复]

lsmd5eda  于 2023-01-08  发布在  Python
关注(0)|答案(1)|浏览(199)
    • 此问题在此处已有答案**:

Why can't I iterate twice over the same iterator? How can I "reset" the iterator or reuse the data?(5个答案)
5年前关闭。
伙计们!
我正在使用Python 3.6.1,遇到了一个有趣的问题:
我使用一个简单的itertools. filter()从items列表中获取一个子列表,然后只打印它两次。

items = [1,2,3,4,5]
operateVersions = filter(lambda t: t, items)
print ("1: %s" % list(operateVersions))
print ("2: %s" % list(operateVersions))

结果很奇怪:

1: [1, 2, 3, 4, 5]
2: []

因此,当我运行list(operateVersions)时,它不知何故重写了operateVersions过滤器对象,而不是仅仅返回列表解释
这是一个好的行为吗?它不找我是

nwlqm0z1

nwlqm0z11#

过滤器是一个特殊的可迭代对象,就像生成器一样,你只能迭代一次,所以当你第二次运行它时,它本质上返回一个空列表。

相关问题