読者です 読者をやめる 読者になる 読者になる

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を使っていこう!

引数で関数を指定するときに使うことが多いらしいです

コードも見やすくなりそう