Uli*_*liw 2 python combinations function programmatically-created
关于这个主题有很多有趣的帖子,但我似乎要么不理解他们的答案,要么目标不同。这就是我正在尝试做的事情。我有两个(或更多)函数想要组合成一个新函数。以下片段显示了我的开始内容以及我想要的结束内容。
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]]
Run Code Online (Sandbox Code Playgroud)
问题是,我想ab在运行时动态创建。我有一个包含所有函数的列表ml,因此我可以在新函数中执行以下操作
def abl(x):
ml = [a, b]
rl = []
i = 0
for f in ml:
rl.append(f(x[i]))
i = i + 1
Run Code Online (Sandbox Code Playgroud)
然后打电话abl。该代码组合了各个函数并产生预期的输出。然而,每次调用都abl rl必须重新构建,这似乎很浪费。
是否有另一种方法可以组合a和b来创建新函数ab?
您可以通过lambda 表达式动态返回新函数:
def a(x):
return 0.2 * x[1] - 0.4 * x[0]
def b(x):
return 0.4 * x[0] - 0.2 * x[1]
def combine(func1, func2):
return lambda x: [func1(x), func2(x)]
ab = combine(a, b)
print(ab([1.3, 2.9]))
Run Code Online (Sandbox Code Playgroud)
输出:
[0.05999999999999994, -0.05999999999999994]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |