【Python】lambdaの使い方

lambdaとは?

lambdaとは、名前を持たない関数定義することができます。
また、関数を変数に代入することが可能です。

参考文献

Pythonをこれから勉強される方には、 この本が一番参考になるのではないでしょうか。

みんなのPython 第4版

みんなのPython 第4版

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を用いることで、
リストやタプルに対して処理を記載することができる。