2024-04-24 19:14:57 发布
网友
我有一个函数列表叫做func\u list。你知道吗
我想逐个执行它们,func_list[index]的执行结果必须作为参数传递给func_list[index + 1],依此类推。你知道吗
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
有没有更好的方法达到同样的效果?你知道吗
这就是^{}的用途。你知道吗
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,第三个可选参数是要放在该列表之前的值(作为二进制函数第一次运行的第一个参数)。你知道吗
functools.reduce
上一个函数调用的结果以a的形式给出给下一个函数调用,iterable中的下一项以b的形式给出。因此lambda a,b: b(a)调用上一个结果作为下一个函数的参数。你知道吗
a
b
lambda a,b: b(a)
这就是^{} 的用途。你知道吗
这将运行
functools.reduce
接受两个参数(也可以选择第三个)。第一个参数是返回值的二进制函数,第二个参数是要传递到二进制函数中的值的iterable,第三个可选参数是要放在该列表之前的值(作为二进制函数第一次运行的第一个参数)。你知道吗上一个函数调用的结果以
a
的形式给出给下一个函数调用,iterable中的下一项以b
的形式给出。因此lambda a,b: b(a)
调用上一个结果作为下一个函数的参数。你知道吗相关问题 更多 >
编程相关推荐