Python内置函数

时间:2015-02-22 20:42:19

标签: python

在python中是否有这样的函数的内置等价物:

def foo(a_func,a_list):
    if len(a_list)==2:
        return a_func(*[a_list])
    else:
        return a_func(a_list[0],foo(a_func,a_list[0:]))

换句话说foo(lambda x,y:x+y,[1,2,3,4])会添加1+2+3+4 并且foo(lambda x,y:x-y,[1,2,3,4])((1-2)-3)-4等。

而且我知道你可以让它更快并防止堆栈溢出(:D)但我想我记得这样的功能但不知道这个名字是什么,不知道该怎么去谷歌。

3 个答案:

答案 0 :(得分:3)

它是reduce函数的用途!

  

将两个参数的函数累加到iterable的项目中,从左到右,以便将iterable减少为单个值

答案 1 :(得分:2)

看起来你正在寻找https://docs.python.org/2/library/functools.html#functools.reduce(Python 2中的AKA https://docs.python.org/2/library/functions.html#reduce),假设你的代码中有一个错误,a_list[0:]你实际上是指{ {1}}(否则你正在寻找一个永无止境的循环: - )。

答案 2 :(得分:2)

您正在描述reduce() function;在Python 3中它已被移动到functools module

  

将两个参数的函数累加到序列项中,从左到右,以便将序列减少为单个值。例如,reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])计算((((1+2)+3)+4)+5)

你当然可以使用任何可赎回的; operator module提供了几个方便的选项:

>>> from functools import reduce
>>> import operator
>>> reduce(operator.add, [1,2,3,4])
10
>>> reduce(operator.sub, [1,2,3,4])
-8