Я пытаюсь создать функцию, которая является функцией «r» и принимает два массива параметров r0
и V
, а также n
, который является количеством элементов r0
.
Функция определяется следующим образом: если r
ниже r[0]
, возвращается V[0]
; если r
находится между r[0]
и r[1]
, вернуть V[1]
и т. д. и, наконец, если r
выше r[n]
, вернуть V[n+1]
. Это иллюстрирует функцию, определенную вручную для n = 3:

Вот пример кода, который я пытался сделать с помощью лямбда-функций:
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 "undefined." «- Я не знаю, как« добавлять »функции, чтобы они объединяли результат.
Есть идеи, как исправить этот код?