Joe*_*Joe 7 python list-comprehension
我想在列表推导中构造一个值,但也要过滤该值.例如:
[expensive_function(x) for x in generator where expensive_function(x) < 5]
Run Code Online (Sandbox Code Playgroud)
我想避免expensive_function每次迭代调用两次.
该generator会返回一个无穷级数,并列表内涵没有懒洋洋地评估.所以这不起作用:
[y in [expensive_function(x) for x in generator where expensive_function(x)] where y < 5]
Run Code Online (Sandbox Code Playgroud)
我可以用另一种方式写,但是对于列表理解感觉是正确的,我确信这是一种常见的使用模式(可能与否!).
Eth*_*man 10
如果generator可能是无限的,则您不希望使用列表推导.并非所有事情都必须是一线的.
def filtered_gen(gen):
for item in gen:
result = expensive_function(item)
if result < 5:
yield result
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1149 次 |
| 最近记录: |