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/