【Python】lambdaの使い方
lambdaとは?
lambdaとは、名前を持たない関数定義することができます。
また、関数を変数に代入することが可能です。
参考文献
Pythonをこれから勉強される方には、 この本が一番参考になるのではないでしょうか。
- 作者: 柴田淳
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/12/22
- メディア: 単行本
- この商品を含むブログ (2件) を見る
defと記載方法を比較
以下の2つは、どちらもa・bという2つの引数を与えて
足し算をする関数です。
defを用いた関数
def function(a, b): return a + b
lambdaを用いた関数
lambda_function = lambda a, b: a + b
どんな時に使う?
結論からお伝えするとmapと使われることが多いです。
mapとは?
リストやタプルの各要素に対して同じ処理を行う関数です。
mapとlambdaの組み合わせ
計算対象のリストを作成する
sample = [1, 2, 3, 4]
リストの値に対して2をかける関数fを作成する。
f = lambda x: x*2 result = map(f,sample)
実行結果を確認する
print(list(result)) [2, 4, 6, 8]
簡単な例ではこのように、mapと組み合わせることで、
リストやタプルに対して同じ処理を行うことが可能になる。
条件分岐処理
リストやタプルの一つ一つに処理を加える際に、
if文で条件を指定して処理を実行させる事も可能です。
filter関数を用いる場合
sample = [1, 2, 3, 4] result = list(filter(lambda number:number > 2, sample)) print(result)
結果
[3, 4]
sampleというリストの中にある値を順に参照し、
X > 2
という条件判定を行います。
また、filter関数を使うことで、
条件に合致したも(X > 2
)のだけを抽出するようにしております。
そのため、変数resultには3と4のみが格納されました。
if文を用いる場合
if文を用いることで条件に合致した場合の処理と
合致しなかった場合の処理を行うことが可能になります。
sample = [1, 2, 3, 4] f = lambda x : x*2 if x *2 == 2 else x res = map(f, sample) print(list(res))
f = lambda x : x*2 if x *2 == 2 else x
この部分で条件分岐と処理内容を記載している。
x*2の値が2だった場合、x*2
の処理を行う。
条件に合致しなかった場合は、何も処理を加えない(else x
)
そのため、実行結果は以下の通りになる。
[2, 2, 3, 4]
一番はじめの1の値が1*2
をすると2になるので、
その部分だけ処理が行われ、それ以外は何も変化していない。
このようにlambdaを用いることで、
リストやタプルに対して処理を記載することができる。