Python:list(过滤器对象)清空对象

时间:2017-08-16 12:21:22

标签: python list filter python-3.6

人!

我正在使用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 个答案:

答案 0 :(得分:0)

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