gpt4 book ai didi

Python列表理解 - 想要避免重复评估

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

我的列表理解近似于:

[f(x) for x in l if f(x)]

其中 l 是一个列表,f(x) 是一个返回列表的昂贵函数。

我想避免为 f(x) 的每次非空出现两次计算 f(x)。有没有办法在列表理解中保存它的输出?

我可以删除最终条件,生成整个列表,然后修剪它,但这似乎很浪费。

编辑:

提出了两种基本方法:

内部生成器理解:

[y for y in (f(x) for x in l) if y]

或内存。

我认为对于上述问题,内部生成器理解是优雅的。实际上我简化了问题以使其清楚,我真的很想:

[g(x, f(x)) for x in l if f(x)]

对于这种更复杂的情况,我认为记忆化会产生更清晰的最终结果。

最佳答案

[y for y in (f(x) for x in l) if y]

会的。

关于Python列表理解 - 想要避免重复评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15812779/

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