python - 如何将此生成器函数转换为 lambda 表达式

标签 python lambda generator list-comprehension

def f(nums):
    sum = 0
    for i in nums:
        sum += i
        yield sum

我试图根据 args nums(类型列表),使用列表理解来启动一个新列表,其中每个索引的值都是以前的累积。

最终结果看起来像[i for i in f(nums)]

有没有办法将函数转换为 lambda 表达式?或任何其他使其成为一条线?

最佳答案

这是一种方法:

nums=[1,2,3,4]

[sum(nums[:idx+1]) for idx, i in enumerate(nums)]

输出:

[1, 3, 6, 10]

另一种方法是使用 itertools.accumulate正如@Blckknght 所建议的那样。

from itertools import accumulate

list(accumulate(nums))

输出:

[1, 3, 6, 10]

关于python - 如何将此生成器函数转换为 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51317541/

相关文章:

python - Jupyter notebook 无法识别 venv 中的包

python - 在 Python 解释器中重新加载

python - 如何将 POST 数据流式传输到 Python 请求中?

python - 我们如何从 matplotlib 导航工具添加希腊符号作为轴标签?

python - 如何在 PyTorch 中使用非方形填充进行反卷积网络

amazon-web-services - 可以在 lambda 中订阅 aws IOT 主题吗?

lambda - 在 lambda 中使用 return?

python - 在一个函数中调用两个 pandas 列?

php - Zend Framework 的模型和后端接口(interface)生成器

python - 相当于 Python 生成器的 `return`