そもそもWhat is lambda(無名関数、ラムダ式) ??
Wikipediaから引用するとこんなの
無名関数とは、名前付けされずに定義された関数のことである。
Wikipedia-無名関数 https://ja.wikipedia.org/wiki/%E7%84%A1%E5%90%8D%E9%96%A2%E6%95%B0
そのまんまの意味ですね
関数の定義
基本形
Pythonでは関数の定義を普通こうやってやるところを
def func(引数):
return 返り値
def func(引数1, 引数2, ・・・):
return 返り値
lambda
を使って次のようにように書くことができます
lambda 引数: 返り値
lambda 引数1, 引数2, ・・・: 返り値
実際に使ってみると無名関数もしっかりと関数やっていますね
def division(a, b):
return a/b
division_lam = lambda a, b: a/b
print(division(3, 2))
# 1.5
print(division_lam(3, 2))
# 1.5
ifを使う
lambda
を使っていると何かとif文を使いたいことも出てきます
もちろんifを使うことも可能です!
具体的には以下のように三項演算子を利用します
lambda 引数: Trueの時の値 if 条件式 else Falseの値
func = lambda a: '偶数' if a%2==0 else '奇数'
print(func(2))
# 偶数
print(func(3))
# 奇数
引数なし
引数なしでもlambda
は使えます
func = lambda : 'hello'
print(func())
# hello
高階関数で使う
今まではlambda
で宣言はしていましたが結局変数に入れていたので、普通の関数定義とあんまり変わ利ませんね
そこで高階関数で利用する例を紹介します
高階関数はlambdaが活躍する典型的な例ですね
高階関数には引数として関数を与えるわけですが、その関数は比較的簡単な場合が多いです
ここでいちいち関数を定義するのはコードも汚くなってしまうのでlambda
の出番というわけですね
ではmap
を例に使ってみましょう
x = [i for i in range(10)]
print(list(map(lambda a: a**2, x)))
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
はい、簡潔ですね
lambda 👍
高階関数についてはこちらをご覧ください
lambda(無名関数、ラムダ式)のメリット・デメリット
わざわざlambda(無名関数、ラムダ式)なるものがあるからにはメリットも存在します
- 小さい関数をわざわざ定義する必要がない
- 名前の衝突を考えなくて良い
- コードが簡潔になる
すぐに思いつくのはこの辺りでしょうか?
デメリットは再帰関数を作るのが面倒なところだと思います
よく考えたら無名関数で再帰ってどうやってやるんですかね?
調べたらありました
難しそう…
再帰関数は普通に作った方が良さそうです

各言語による無名再帰処理の実行例まとめ
コメント