2017-02-05 85 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是必要的。 –