python list里前后数字相加比如说 [1,2,3],得到的列表是[1,3,6]?

题主这个问题对应的专业术语叫作“累加”,许多数据处理工具中都实现了这个函数,例如 Matlab、Excel、numpy、pandas 等,基本上与 求和、求平均数 这些函数处于同等的地位。
累加函数在各个工具中的名称一般是 cumsum,是“累计”与“求和”两个单词的缩写。累加函数作用于数组或矩阵。
分别举一个 Matlab 和 numpy 中的用例:
Matlab:
\u0026gt;\u0026gt; cumsum()ans = 1 3 6 10Python numpy:
\u0026gt;\u0026gt;\u0026gt; import numpy as np\u0026gt;\u0026gt;\u0026gt; np.cumsum()array(, dtype=int32)\u0026gt;\u0026gt;\u0026gt; np.cumsum().tolist() 【python list里前后数字相加比如说 [1,2,3],得到的列表是[1,3,6]?】 考虑到 numpy 安装起来比较费事,如果你想用原生的 Python 来实现这个函数,生成器应该是效率最高的方法了:
\u0026gt;\u0026gt;\u0026gt; def cumsum(lst): s = 0 for a in lst: s += a yield s \u0026gt;\u0026gt;\u0026gt; cumsum() \u0026lt;generator object cumsum at 0x0DF4FFC0\u0026gt; \u0026gt;\u0026gt;\u0026gt; list(cumsum()) @偲念是壹種病 已经在前面提到了这种方法。
当然,如果你觉得yield太难理解,自己写个 for 循环或者列表生成式也无可厚非,在轻量级的计算中,效率上的差别可忽略不计 ~


■网友
[reduce(lambda a,b: a+b, input for x in xrange(len(input)))
■网友
没看懂怎么生成的


    推荐阅读