在我正在编写的一些代码中,我想要一个类似于内置 sum() 函数的函数,除了我自己的自定义两个参数函数而不是加法。编写这样一个函数很容易,但我想知道标准库中是否有一个?我浏览了itertools 文档,但没有找到任何东西。它也类似于itertools.accumulate(mylist)[-1]
,除了 sum 以外的函数。
我自己的这种功能的代码:
def accumulate(iterable, func):
it = iter(iterable)
out = func(next(it), next(it))
for i in it:
out = func(out, i) # "out += i"
return out
所以sum(mylist)
将相当于accumulate(mylist, lambda x, y: x+y)
. 当然,在我的用例中,我想使用一个不同的函数(它比简单的算术运算更复杂。)
这似乎是一件相当普遍的事情,这就是为什么我很惊讶半小时的搜索没有找到这样的东西。那么:标准库中是否以及在哪里存在这样的功能?(我现在在上面使用我自己的代码。)