Edited at
AidemyDay 16

python  無名関数 lambda式 その3

lambdaはdefによる関数と異なり、返り値の部分には式のみ入れることができます。

例えばdefによる関数では、


例1:"hello."と出力する関数

def say_hello():

print("hello.")

といった処理が可能でしたが、これをlambdaで表現することはできません。

追記:Python3ではPrintが関数となり式として使えるようになったのでlambdaでも表現可能です。shiracamusさんコメントありがとうございます。

ただし、ifを用いた条件分岐に関しては三項演算子(公式には条件式)という手法を用いることでlambdaでも作成することができます。

例えば


例2:引数が3未満ならば2を掛け、3以上ならば3で割って5で足す関数

def lower_three1(x):

if x < 3:
return x * 2
else:
return x/3 + 5

上記の関数をlambdaで表現すると、


例3:lower_three1と同じ関数

lower_three2 = lambda x: x * 2 if x < 3 else x/3 + 5


このように書くことができます。三項演算子の表記は以下のようになっています。

条件を満たす時の処理 if 条件 else 条件を満たさない時の処理

このように、lambda以外にも様々な場面でコードの節約をすることができます。

引用:アイデミー データクレンジングコース

(上記の弊社サイトでは問題演習が可能です)

その1 https://qiita.com/vntomo/private/49cd45d3798bb66a3775

その2 https://qiita.com/vntomo/private/c041a004d60d00ad464b

その3 https://qiita.com/vntomo/private/fd16e40a21bde5dc03ae