人!
我正在使用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
过滤器对象,而不是只返回列表解释
这是好行为吗?它没有找我,
答案 0 :(得分:0)
过滤器是一个特殊的可迭代对象,就像生成器一样,只能迭代一次。所以基本上它会在你第二次运行它时返回一个空列表。