2017-03-15 54 views
1

我想要創建一個x的lambda函數,以便在給定x的列表中的所有lambda函數的結果之間取最大值。在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

可以使用generator expression申請x各功能:

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

這避免保存在內存中的所有功能的結果列表,當你只需要追蹤到目前爲止發現的最高價值。

您可能會對Python文檔中包含的Python Functional Programming HOWTO感興趣,該文檔教授關於生成器表達式和其他功能技術。