- 此问题在此处已有答案**:
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
过滤器对象,而不是仅仅返回列表解释
这是一个好的行为吗?它不找我是
1条答案
按热度按时间nwlqm0z11#
过滤器是一个特殊的可迭代对象,就像生成器一样,你只能迭代一次,所以当你第二次运行它时,它本质上返回一个空列表。