2017-02-05 106 views
1

我想通過一個lambda表達式實現功能如下:Lambda表達式:返回多個值

取而代之的是:

def f(x, y, z): 
    return x + 1, y * 2, z * 3 

我想用一個lambda表達式,像這樣:

f = lambda x, y, z: x + 1, y * 2, z * 3 

堆棧跟蹤:

*Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
NameError: name 'y' is not defined* 

這是什麼原因導致錯誤?如何才能做到這一點?

回答

5

您的元組綁定不正確 - lambda以第一個逗號結束。將元素放在元組周圍:

f=lambda x,y,z: (x+1,y*2,z*3) 
+0

要添加到@Austin函數的返回不需要括號。返回a,b,c'的符號默認返回一個元組''(a,b,c)' – pmuntima

+0

Lambda函數返回值與定期定義的函數不同。這些parens是必要的。 –