0
guys!Python:list(filter object)清空对象
我使用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
过滤对象,而不是仅仅返回列表解释
它是一个正常的行为吗?它不寻找我它是
你使用'itertools.filter'吗?据我所知,它不存在于python3.x(至少,它不存在于我的机器上安装的python3.5上)。 – mgilson
非常相关:https://stackoverflow.com/q/12319025/748858 - 具体来说,如果您想迭代迭代器多次,您需要将列表存储在'operateVersions'而不是迭代器中。 – mgilson
@mgilson或者在这种情况下,每次直接将过滤器应用于“items”... –