Python: list(filter object) 清空对象
Python: list(filter object) empties the 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
过滤器对象而不是仅仅返回列表解释
这是一个好的行为吗?不是找我是
过滤器是一种特殊的可迭代对象,与生成器一样,您只能迭代一次。因此,当您第二次 运行 时,它基本上 returns 是一个空列表。
伙计们!
我正在使用 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
过滤器对象而不是仅仅返回列表解释
这是一个好的行为吗?不是找我是
过滤器是一种特殊的可迭代对象,与生成器一样,您只能迭代一次。因此,当您第二次 运行 时,它基本上 returns 是一个空列表。