在python中递归调用函数列表?

2024-04-24 19:14:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数列表叫做func\u list。你知道吗

我想逐个执行它们,func_list[index]的执行结果必须作为参数传递给func_list[index + 1],依此类推。你知道吗

我想出了这个密码:

def func(arg, index):
    while index < 10:
        res = func_list[index](arg)
        res = func(res, index+1)
    return res

有没有更好的方法达到同样的效果?你知道吗


Tags: 方法函数密码列表indexreturndefarg
1条回答
网友
1楼 · 发布于 2024-04-24 19:14:57

这就是^{}的用途。你知道吗

from functools import reduce

reduce(lambda a,b: b(a), func_list, FIRST_ARG)

这将运行

func_list[n](func_list[n-1](... func_list[0](FIRST_ARG) ... ))

functools.reduce接受两个参数(也可以选择第三个)。第一个参数是返回值的二进制函数,第二个参数是要传递到二进制函数中的值的iterable,第三个可选参数是要放在该列表之前的值(作为二进制函数第一次运行的第一个参数)。你知道吗

上一个函数调用的结果以a的形式给出给下一个函数调用,iterable中的下一项以b的形式给出。因此lambda a,b: b(a)调用上一个结果作为下一个函数的参数。你知道吗

相关问题 更多 >