Python:将1个参数传递给2d函数数组,并获得相同大小的2d数组的结果

时间:2015-05-03 15:13:48

标签: python arrays lambda

如果我定义一个2d的lambda函数数组,如:

N_gsi = [ [lambda gsi:1/4*(1+gsi[1]),     lambda gsi:1/4*(1+gsi[0])],
          [lambda gsi:-1/4*(1+gsi[1]),    lambda gsi:1/4*(1-gsi[0])],     
          [lambda gsi:-1/4*(1-gsi[1]),    lambda gsi:-1/4*(1-gsi[0])],    
          [lambda gsi:1/4*(1-gsi[1]),     lambda gsi:-1/4*(1+gsi[0])]]    

然后可以以优雅的方式将每个函数的结果(当然使用相同的参数gsi)获得到相同大小的数组中吗? (没有循环)

类似的东西:

resultArray = N_gsi(myArgumentGsi)

1 个答案:

答案 0 :(得分:0)

这个小函数应该对具有任意嵌套深度的集合起作用。我不确定你是否会将递归计为循环。

def apply(fs, arg):
    if callable(fs):
        return fs(arg)
    else:
        return list(map(lambda f: apply(f, arg), fs))

然后,您可以为特定用例编写lambda gsi: apply(N_gsi, gsi)