2017-02-05 10 views
1

を返す:ラムダ式:私は次のようにラムダ式を経由して機能を実装したい複数の値

この代わりに:

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

私はラムダ式を使用したい、このように:

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

あなたのタプルは正しくバインドされていません - ラムダは最初のカンマで終わります。括弧を必要としない機能でリターンを@Austinに追加する

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

:タプルの周りに括弧を入れてください。 'return a、b、c 'という表記は、暗黙的にタプル'(a、b、c) 'を返します。 – pmuntima

+0

ラムダ関数の戻り値は、定期的に定義された関数とは異なります。罰則は必要です。 –