擅长:python、mysql、java
<p>注意:在我写这篇文章之前,不知怎么的我错过了@DSM的答案。去读一读然后投那个,我就投了。如果你想要更长时间的回答,请回来。在</p>
<p>Python有这个特性,称为accumulate,它是从python3.2开始在itertools标准库模块中实现的。可选的第二个参数“func”是在3.3中添加的。在</p>
<pre><code>import itertools
l = [1,2,3,4]
out = itertools.accumulate(l)
</code></pre>
<p>在本例中,<code>out</code>是一个iterable。如果你需要一份名单,那么</p>
^{pr2}$
<p><code>accumulate()</code>函数可用于生成一个连续的总计,或“累计和”。默认功能是加法。我们可以将函数作为第二个参数传入:</p>
<pre><code>import itertools
import operator
l = [1,2,3,4]
factorial = itertools.accumulate(l, operator.mul)
</code></pre>
<p>我们进去了操作员.mul使乘法产生一个运行的乘积。<code>operator</code>模块导出一组与Python的内在运算符相对应的有效函数。在</p>
<p>当然,我们不局限于<code>operator</code>模块中定义的函数。您可以使用任何接受第一个参数中元素类型的2个参数的函数。您可以发挥创造性,但在这里我将相反地使用lambda显式实现默认的加法/求和行为:</p>
<pre><code>import itertools
l = [1,2,3,4]
out = itertools.accumulate(l, lambda a, b: a + b)
</code></pre>
<p>最后,既然您提出了这个问题,我认为使用<code>accumulate</code>比您的循环示例更像python。在</p>