Skip to main content
 首页 » 编程设计

python之accumulate 中的两个操作

2025年05月04日14daizhj

我试图将以下循环转换为 accumulate() 调用,但我失败了:

total = 0 
for h in heat_values: 
    total += h 
    total -= total*0.25 

如何累加包含这个 0.25 衰减因子的 h 值?

背景:我想做这个只是为了好玩,用函数式编程风格模拟同时加热和冷却的过程(加法运算是加热步骤,减法是冷却步骤)。我想获取累积值来绘制过程值。

请您参考如下方法:

除非我的数学或推理不正确,否则这就是使用 accumulate 实现此目的的方法:

heatvalues = [20, 30, 40, 50] 
 
list(accumulate(heatvalues, lambda x, y: (x+y)*.75)) 
 
>>>[20, 37.5, 58.125, 81.09375] 

编辑:如果你只想要最后一个元素,也就是总数,那么它就变成了:

list(accumulate(heatvalues, lambda x, y: (x+y)*.75))[-1] 
 
>>>81.09375