什么是实现cumsum的优雅而Python式的方式?
或者-如果已经有内置方法可以做到,那当然更好。

最佳答案

Numpy中可用:

>>> import numpy as np
>>> np.cumsum([1,2,3,4,5])
array([ 1,  3,  6, 10, 15])

或者从python 3.2开始使用 itertools.accumulate :
>>> from itertools import accumulate
>>> list(accumulate([1,2,3,4,5]))
[ 1,  3,  6, 10, 15]

如果没有Numpy选项,那么生成器循环将是我能想到的最优雅的解决方案:
def cumsum(it):
    total = 0
    for x in it:
        total += x
        yield total

例如
>>> list(cumsum([1,2,3,4,5]))
>>> [1, 3, 6, 10, 15]

关于python - 优雅的pythonic cumsum,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9258602/

10-12 17:03