gpt4 book ai didi

python - 如何使用 map 和 reduce 在 Python 中按步骤组成函数列表

转载 作者:太空狗 更新时间:2023-10-30 02:37:31 25 4
gpt4 key购买 nike

给定一个函数(functions)列表和一个整数 n,我试图找出一种逐步组合它们的方法,并返回每个逐步结果的列表,如下所示:

compose_step([lambda x: x+3, lambda x: x+5, lambda x: x+1], 8) --> [8, 11, 16, 17]

所以,到目前为止,我已经想出了如何组成一个函数列表并按如下方式返回结果:

def compose(functions, n):
def compose2(f,g):
return lambda x: f(g(x))
composedFunction = functools.reduce(compose2, functions, lambda x: x)
return composedFunction(n)

但是,我非常困惑如何跟踪每个步骤并将其作为列表返回。我假设我需要以某种方式使用 map 以便将每个逐步部分映射到列表。我还提出了一种将列表中的所有函数应用到 n 的方法:

def apply_all_functions(functions, n):
answerList = list(map(methodcaller('__call__', n), functions)))
return answerList

我正在考虑以某种方式使用 composeFunction 函数来组合一个新的逐步函数列表,一直到完全组合的函数,然后将其用作 apply_all_functions 的新列表以实现所需的结果。但目前,我很困惑。

最佳答案

您可以使用 itertools.accumulate具有合成功能

from itertools import accumulate

def compose(f, g):
return lambda x: f(g(x))

funcs = [lambda x: x, lambda x: x+3, lambda x: x+5, lambda x: x+1]

print([f(8) for f in accumulate(funcs, compose)])
# [8, 11, 16, 17]

关于python - 如何使用 map 和 reduce 在 Python 中按步骤组成函数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50011450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com