如何将参数传递给数组中的函数?
How do you pass arguments to a function within an array?
假设我有一个函数数组,每个函数都有相同的参数,但每个函数都以不同的方式处理参数。然后我想迭代一个循环,一遍又一遍地使用我的函数数组来获取更新的值。如何将参数传递给函数?
def f_1(a, b, c):
val = a + b + c
return val
def f_2(a, b, c):
val = a*b + c
return val
# something like this?
fun_arr = [f_1, f_2]
val1 = [fun_arr[0](a1, b1, c1), fun_arr[1](a1, b1, c1)]
val2 = [fun_arr[0](a2, b2, c2), fun_arr[1](a2, b2, c2)]
我希望上面的伪代码有意义。这是我正在尝试做的事情的简化版本。
如果上下文有帮助,我正在尝试为一个方程组编写一个 RK2 算法,该方程组可能可以重复用于一组通用的 ODE。我想我可以很容易地编写一些适用于我的特定问题的简单代码,但我想挑战自己,使我的代码可重用。
像这样:
fun_arr = [f_1, f_2]
args_list = [
(a1, b1, c1),
(a2, b2, c2),
]
val1 = [f(*args_list[0]) for f in fun_arr]
all_vals = [
[f(*args) for f in fun_arr]
for args in args_list
]
def solver(fun_arr,*vals):
new_vals = []
for v in vals:
for f in fun_arr:
new_vals.append(f(v))
假设我有一个函数数组,每个函数都有相同的参数,但每个函数都以不同的方式处理参数。然后我想迭代一个循环,一遍又一遍地使用我的函数数组来获取更新的值。如何将参数传递给函数?
def f_1(a, b, c):
val = a + b + c
return val
def f_2(a, b, c):
val = a*b + c
return val
# something like this?
fun_arr = [f_1, f_2]
val1 = [fun_arr[0](a1, b1, c1), fun_arr[1](a1, b1, c1)]
val2 = [fun_arr[0](a2, b2, c2), fun_arr[1](a2, b2, c2)]
我希望上面的伪代码有意义。这是我正在尝试做的事情的简化版本。
如果上下文有帮助,我正在尝试为一个方程组编写一个 RK2 算法,该方程组可能可以重复用于一组通用的 ODE。我想我可以很容易地编写一些适用于我的特定问题的简单代码,但我想挑战自己,使我的代码可重用。
像这样:
fun_arr = [f_1, f_2]
args_list = [
(a1, b1, c1),
(a2, b2, c2),
]
val1 = [f(*args_list[0]) for f in fun_arr]
all_vals = [
[f(*args) for f in fun_arr]
for args in args_list
]
def solver(fun_arr,*vals):
new_vals = []
for v in vals:
for f in fun_arr:
new_vals.append(f(v))