假设我有一个复杂的函数f(A, B)
。我想递归地将其应用于输入列表X = [C, D, E]
。
我想知道如何定义函数g
,使g([C, D, E])
的输出为f(f(C, D), E)
,对于任意长度的X
。
让我们定义一个示例函数:
def f(A, B):
return A + B
如何定义g
?
有reduce
可以做到这一点:
from functools import reduce
result = reduce(f, [1, 2, 3])
如果你喜欢自己定义它:
def g(lst):
res = lst[0]
for val in lst[1:]:
res = f(res, val)
return res
result = g([1, 2, 3])
如果您只想使用reduce
获得一个参数,那么按照如下方式嵌入它:
g = lambda lst: reduce(f, lst)