在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 ),但是我想我记得这样的函数,但是我不知道它的名字是什么,也不知道google是什么。
发布于 2015-02-22 20:46:04
发布于 2015-02-22 20:44:12
这就是reduce函数的作用所在!
将两个参数的函数累加到从左到右的可迭代项,从而将可迭代性降为单个值。
发布于 2015-02-22 20:45:22
看起来您正在寻找https://docs.python.org/2/library/functools.html#functools.reduce ( Python 2中的AKA https://docs.python.org/2/library/functions.html#reduce ),假设您的代码中有一个bug,而a_list[0:]实际上是指a_list[1:] (否则您要寻找的是一个永无止境的循环:-)。
https://stackoverflow.com/questions/28663006
复制相似问题