gpt4 book ai didi

python - 列表理解/生成器中的海象赋值表达式

转载 作者:行者123 更新时间:2023-12-05 09:02:50 24 4
gpt4 key购买 nike

我正在尝试将 foo_list 的每个元素传递给函数 expensive_call,并获取其输出为 expensive_call 的所有项的列表是真实的。我正在尝试通过列表理解来做到这一点,这可能吗?像这样的东西:

像这样:

 result_list = [y := expensive_call(x) for x in foo_list if y]

或者……

 result_list = [y for x in foo_list if y := expensive_call(x)]

注意:这不是解决方案,因为它调用了两次昂贵的调用:

 result_list = [expensive_call(x) for x in foo_list if expensive_call(x)]

在有人推荐 none list comprehension 之前,我知道可以这样做:

result_list = []
for x in foo_list:
result = expensive_call(x)
result and result_list.append(result)

最佳答案

从上面引用:

result_list = [y for x in foo_list if y := expensive_call(x)]

它应该几乎完全按照您的方式工作;只需记住用 := 运算符将赋值括起来,如下所示。

foo_list = [1, 2, 3]
def check(x): return x if x != 2 else None

result_list = [y for x in foo_list if (y := check(x))]
print(result_list)

结果:

[1, 3]

关于python - 列表理解/生成器中的海象赋值表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70760723/

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