如何将参数传递给数组中的函数?

时间:2019-05-16 19:44:33

标签: python numerical-methods

假设我有一个函数数组,每个函数具有相同的参数,但是每个函数以不同的方式进行操作。然后,我想遍历一个循环,一次又一次地使用我的函数数组来获取更新的值。如何将参数传递给函数?

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。我认为我可以很容易地编写一些适用于我的特定问题的简单代码,但我想挑战自己以使代码可重用。

2 个答案:

答案 0 :(得分:3)

赞:

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
    ]

答案 1 :(得分:1)

def solver(fun_arr,*vals):
    new_vals = []
    for v in vals:
        for f in fun_arr:
            new_vals.append(f(v))