Pythonのlambda(無名関数)について
lambdaって見た目からして難しそうですね、でも使えるこなせるようになってみたい
例えば引数を2乗する関数は普通に書くとこうなりますね
def foo(x): return x ** 2 print(foo(3)) # 9
lamdaを使うとこうなります
lam = lambda x: x ** 2 print(lam(3)) # 9
この場合ではfooとlamが等価になっていますね
つまり
lambda (引数): (戻り値)
で関数になるということです。
「関数になる」というのがよく分からない場合はPythonの対話型シェルを開いて次のコードを打ち込んでみると分かりやすい
>>> (lambda x: x ** 2)(3) 9
(lambda x: x ** 2)
が普通の関数と同じように使えています。(3)
が引数の部分ですね
次に条件分岐を加えてみます
print((lambda x: x ** 2 if x > 10 else 0)(3)) # 0
x >10
ならばx ** 2
を返しそうでなければ0
を返すという意味です
これは条件演算子や三項演算子と呼ばれ他にもいろいろな書き方がある
これを普通にやろうとすると
def foo(x): if x > 10: return x ** 2 else: return 0 print(foo(3))
となってかなり面倒臭いです
1回しか使わないような細かい関数はdefしないでlamdaを使っていこう!
引数で関数を指定するときに使うことが多いらしいです
コードも見やすくなりそう