scr*_*tal 12 python list-comprehension list python-2.7
我有一个列表理解,调用一个可能返回的函数None
.
>>> f = lambda x: x if x < 3 else None
>>> l = [f(x) for x in [1,2,3,4]]
[1, 2, None, None]
Run Code Online (Sandbox Code Playgroud)
我希望上面的列表理解,没有'无'条目.
什么是更有效的方式来执行以下操作,而不会产生额外的开销,同时保持列表理解的效率?
>>> filter(None, [f(x) for x in [1,2,3,4]])
[1, 2]
Run Code Online (Sandbox Code Playgroud)
Ste*_*uch 20
添加if
到您的理解中,如:
l = [y for y in (f(x) for x in [1,2,3,4]) if y is not None]
Run Code Online (Sandbox Code Playgroud)
通过在列表推导中放置生成器表达式,您只需要对函数进行一次求值.此外,生成器表达式是一个生成器,因此不需要额外的中间存储.
归档时间: |
|
查看次数: |
3828 次 |
最近记录: |