【发布时间】:2022-01-10 01:16:26
【问题描述】:
关于这个主题有很多有趣的帖子,但我似乎要么不明白他们的答案,要么瞄准不同的东西。这是我想要做的。我有两个(或更多)函数要组合成一个新函数。下面的 sn-p 显示了我开始的内容,以及我想要结束的内容。
def a(x):
0.2 * x[1] - 0.4 * x[0]
def b(x):
0.4 * x[0] - 0.2 * x[1]
def ab(x):
return [0.2 * x[1] - 0.4 * x[0], 0.4 * x[0] - 0.2 * x[1]]
问题在于,我想在运行时动态创建ab。
我有一个包含所有功能的列表ml,所以我可以在新功能中执行以下操作
def abl(x):
ml = [a, b]
rl = []
i = 0
for f in ml:
rl.append(f(x[i]))
i = i + 1
然后拨打abl。此代码组合了各个函数并产生了预期的输出。但是,每次调用abl rl 都必须重新构建,这似乎很浪费。
是否有另一种方法可以结合a 和b 来创建一个新函数ab?
【问题讨论】:
-
我没听懂。
ab(x)有什么问题? -
您为
abl发布的代码似乎不完整。请提供一个完整的、可重现的示例。 -
您不需要
i。更多 pythonic 来做for f, xi in zip(ml, x)并使用xi而不是x[i]。实际上你根本不需要这个,因为你想将整个x传递给a()和b()函数。就做for f in ml: rl.append(f(x)) -
另外,无论如何,每次调用
ab()时,您都会创建一个新的rl- 以您在abl()中的方式创建它与您在@ 中的方式创建它没有什么不同987654346@
标签: python function combinations programmatically-created