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

Python:将1个参数传递给函数的2d数组,并在相同大小的2d数组中获得结果,python,arrays,lambda,Python,Arrays,Lambda,如果我定义一个二维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函数数组,如:

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)

是的,但是你需要做一些改变

N_gsi = lambda gsi: [ [1/4*(1+gsi[1]), 1/4*(1+gsi[0])], [-1/4*(1+gsi[1]), 1/4*(1-gsi[0])], [-1/4*(1-gsi[1]), -1/4*(1-gsi[0])], [1/4*(1-gsi[1]), -1/4*(1+gsi[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)

1/4
默认情况下在Python 2中给出
0