这是经典的python3 doh!。
过滤器是可以迭代的特殊可迭代对象。但是,就像生成器一样,您只能对其迭代一次。因此,通过调用
list(people2),您可以遍历
filter对象的每个元素以生成
list。至此,您已经到达了迭代的尽头,仅此而已。
因此,当您
list(people2)再次致电时,您会得到一个空列表。
演示:
>>> l = range(10)>>> k = filter(lambda x: x > 5, l)>>> list(k)[6, 7, 8, 9]>>> list(k)[]
我应该提到python2,它
filter返回一个列表,所以您不会遇到这个问题。当您将py3的惰性评估带入图片时,就会出现问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)