在输入数组上递归应用函数



假设我有一个复杂的函数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)

最新更新