首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python内置函数

Python内置函数
EN

Stack Overflow用户
提问于 2015-02-22 20:42:18
回答 3查看 126关注 0票数 3

在python中是否存在类似于这种功能的内置功能:

代码语言:javascript
运行
复制
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+4foo(lambda x,y:x-y,[1,2,3,4])将执行((1-2)-3)-4等操作。

我知道你可以让它更快,防止堆栈溢出( :D ),但是我想我记得这样的函数,但是我不知道它的名字是什么,也不知道google是什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-22 20:46:04

您正在描述 function;在Python3中,它已被移动到 module

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

当然,您可以使用任何可调用的; module提供了几个方便的选项:

代码语言:javascript
运行
复制
>>> from functools import reduce
>>> import operator
>>> reduce(operator.add, [1,2,3,4])
10
>>> reduce(operator.sub, [1,2,3,4])
-8
票数 2
EN

Stack Overflow用户

发布于 2015-02-22 20:44:12

这就是reduce函数的作用所在!

将两个参数的函数累加到从左到右的可迭代项,从而将可迭代性降为单个值。

票数 3
EN

Stack Overflow用户

发布于 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:] (否则您要寻找的是一个永无止境的循环:-)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28663006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档