首页 > 解决方案 > 在 python 中使用 lambda 函数以交互方式构建“多步”函数

问题描述

我正在尝试构建一个函数,它是“r”的函数,并接受两个参数数组r0V,以及n的元素数r0

函数定义如:如果r在下面r[0],则返回V[0];ifrr[0]and之间r[1], returnV[1]等等……最后,如果r在上面r[n], return V[n+1]。这说明了手动定义 n = 3 时的函数:

多步函数 n = 3

这是我尝试使用 lambda 函数执行此操作的示例代码:

n = 3
r0 = [10,30,60]
V = [1., -5. , 10., 3. ]

def makefn(r0, V):
    return lambda r : (V[0]-V[1])/2 if r < r0[0] else (V[1]-V[0])/2

for i in range(n):
    temp_function[i] = makefn(r0[i:i+1],V[i:i+2])

step_function = lambda r : (V[0]+V[-1])/2 + [temp_function[i](r) for i in range(n)]

问题是: – 我不知道如何预先分配一个函数列表,所以它返回““temp_function”未定义。” "——我不知道如何“添加”函数,所以它们在那里组合结果。

关于如何修复此代码的任何想法?

标签: python

解决方案


推荐阅读