[英]Why list comprehension with map() function in python can return None
[英]Python list comprehension: test function return
有没有一种方法可以测试列表(或字典)理解中的函数返回? 我想避免这样写:
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()
,整个事情可以变成一个生成器。
itertools.ifilter(None, itertools.imap(foo, range(10)))
只需生成一个生成器来计算值,然后再从生成器中构建过滤列表。
例:
# create generator via generator expression
results = (foo(x) for x in xrange(10))
# build result list, not including falsy values
filtered_results = [i for i in results if i]
以供参考:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.