注意:在我写这篇文章之前,不知何故我错过了@DSM 的答案。去阅读并投票,而不是,我刚刚做了。如果您想要更长的答案,请回来。
Python 有这个,它被称为累积,它在 Python 3.2 开始的 itertools 标准库模块中实现。可选的第二个参数“func”是在 3.3 中添加的。
import itertools
l = [1,2,3,4]
out = itertools.accumulate(l)
在这种情况下out
是一个可迭代的。如果你需要一份清单,那么
out = list(itertools.accumulate(l))
该accumulate()
函数可用于生成运行总计或“累计和”。默认功能是加法。我们可以传入一个函数作为第二个参数:
import itertools
import operator
l = [1,2,3,4]
factorial = itertools.accumulate(l, operator.mul)
这里我们传入 operator.mul 进行乘法运算以生成运行乘积。该operator
模块导出了一组与 Python 的内在运算符相对应的高效函数。
当然,我们不仅限于operator
模块中定义的功能。您可以使用任何接受第一个参数中元素类型的 2 个参数的函数。您可以发挥创意,但在这里我将做相反的事情,并使用 lambda 显式实现默认的加法/求和行为:
import itertools
l = [1,2,3,4]
out = itertools.accumulate(l, lambda a, b: a + b)
最后,既然你问了,我认为 usingaccumulate
比你的循环示例更 Pythonic。