Python列表理解:测试函数返回

发布于 2021-01-29 14:11:18

有没有一种方法可以测试列表(或字典)理解中的函数返回?我想避免这样写:

lst = []
for x in range(10):
  bar = foo(x)
  if bar:
    lst.append(bar)

并改用列表推导。显然,我不想写:

[foo(x) for x in range(10) if foo(x)]

所以?

[foo(x) for x in range(10) if ??? ]
关注者
0
被浏览
111
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    怎么样

    filter(None, map(foo, range(10)))
    

    如果您不想保留中间列表,请替换map()itertools.imap()。有了itertools.ifilter(),整个东西可以变成发电机。

    itertools.ifilter(None, itertools.imap(foo, range(10)))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看