您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

过滤对象在迭代后变为空?

过滤对象在迭代后变为空?

这是经典的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的惰性评估带入图片时,就会出现问题。

其他 2022/1/1 18:45:59 有298人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶