擅长:python、mysql、java
<p>似乎<code>accumulate</code>保留了先前的结果,而<code>reduce</code>(在其他语言中称为fold)不一定。</p>
<p>例如,<code>list(accumulate([1,2,3], operator.add))</code>将返回<code>[1,3,6]</code>,而普通褶皱将返回<code>6</code></p>
<p>另外(只是为了好玩,不要这样做)您可以用<code>reduce</code>定义<code>accumulate</code></p>
<pre><code>def accumulate(xs, f):
return reduce(lambda a, x: a + [f(a[-1], x)], xs[1:], [xs[0]])
</code></pre>