lambdaはdefによる関数と異なり、返り値の部分には式のみ入れることができます。
例えばdefによる関数では、
def say_hello():
print("hello.")
といった処理が可能でしたが、これをlambdaで表現することはできません。
追記:Python3ではPrintが関数となり式として使えるようになったのでlambdaでも表現可能です。shiracamusさんコメントありがとうございます。
ただし、ifを用いた条件分岐に関しては三項演算子(公式には条件式)という手法を用いることでlambdaでも作成することができます。
例えば
def lower_three1(x):
if x < 3:
return x * 2
else:
return x/3 + 5
上記の関数をlambdaで表現すると、
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