2017-03-15 17 views
1

xのラムダ関数を、その与えられたxのリスト内のすべてのラムダ関数の結果の間で最大とするようにしたい。同じパラメータを指定して、Pythonでlambda関数のリストを反復する

この機能をどのようなサイズのリストでも機能させるためのアイデアはありますか?

次の関数を使用して
a = lambda(x): someprocess0(x) 
b = lambda(x): someprocess1(x) 
c = lambda(x): someprocess2(x) 

funcList = [a, b, c] 

function = lambda(x): max(funcList[0](x), funcList[1](x), funcList[2](x)) 

答えて

0

def computeResults(functions, value): 
    res = [] 
    for f in functions: 
     res.append(f(value)) 
    return res 

function = lambda x: max(computeResults(funcList, x)) 
2

あなたは各機能にxを適用するためにgenerator expressionを使用することができます。

function = lambda x: max(f(x) for f in funcList) 

これは、リスト内のメモリ内のすべての関数の結果を維持回避これまでに見つかった最高値を追跡する必要があるときだけです。

ジェネレータの式やその他の機能について教えるPythonのドキュメントには、Python Functional Programming HOWTOが含まれています。

関連する問題