有没有一种方法可以测试列表(或字典)理解中的函数返回?我想避免这样写:
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 ??? ]
怎么样
filter(None, map(foo, range(10)))
如果您不想保留中间列表,请替换map()为itertools.imap()。有了itertools.ifilter(),整个东西可以变成发电机。
map()
itertools.imap()
itertools.ifilter()
itertools.ifilter(None, itertools.imap(foo, range(10)))