我试图将以下循环转换为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

关于python - 累计两个操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43479892/

10-10 05:14