【发布时间】:2014-12-27 15:32:01
【问题描述】:
我有一个方法,它接受一个列表并返回一个对象:
# input a list, returns an object
def map_to_obj(lst):
a_list = f(lst)
return a_list[0] if a_list else None
我想获得一个列表,其中包含所有不是None 的映射元素。
像这样:
v_list = [v1, v2, v3, v4]
[map_to_obj(v) for v in v_list if map_to_obj(v)]
但是在列表推导中两次调用map_to_obj 方法似乎不太好。
有没有办法在列表推导中使用局部变量,以便获得更好的性能?
还是编译器会自动优化?
这就是我想要的:
(sml like)
[let mapped = map_to_obj(v) in for v in v_list if mapped end]
【问题讨论】: