如何找到列表中数字的累积和?

新手上路,请多包涵
time_interval = [4, 6, 12]

我想总结像 [4, 4+6, 4+6+12] 这样的数字以获得列表 t = [4, 10, 22]

我尝试了以下内容:

 t1 = time_interval[0]
t2 = time_interval[1] + t1
t3 = time_interval[2] + t2
print(t1, t2, t3)  # -> 4 10 22

原文由 user2259323 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 505
1 个回答

如果您正在使用这样的数组进行大量数值计算,我建议 numpy ,它带有累积和函数 cumsum

 import numpy as np

a = [4,6,12]

np.cumsum(a)
#array([4, 10, 22])

对于这种事情,Numpy 通常比纯 python 更快,请参阅与 @Ashwini 的 accumu 比较:

 In [136]: timeit list(accumu(range(1000)))
10000 loops, best of 3: 161 us per loop

In [137]: timeit list(accumu(xrange(1000)))
10000 loops, best of 3: 147 us per loop

In [138]: timeit np.cumsum(np.arange(1000))
100000 loops, best of 3: 10.1 us per loop

但当然,如果它是你唯一使用 numpy 的地方,那么依赖它可能不值得。

原文由 askewchan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题