gpt4 book ai didi

python - 如何在列表理解中设置局部变量?

转载 作者:IT老高 更新时间:2023-10-28 22:20:05 24 4
gpt4 key购买 nike

我有一个方法,它接受一个列表并返回一个对象:

# 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]

最佳答案

使用嵌套列表推导:

[x for x in [map_to_obj(v) for v in v_list] if x]

或者更好的是,围绕生成器表达式的列表推导:

[x for x in (map_to_obj(v) for v in v_list) if x]

关于python - 如何在列表理解中设置局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26672532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com