⚠️ 記事内に広告を含みます。

無名関数 lambda式の意味と使い道

def関数よりも簡単に記述できるlambda関数の使い方について

lambda関数・無名関数とは?

lambda関数は無名関数と呼ばれ、defで定義する関数のように名前をつけないで利用できます。

lambda関数は関数を1行で定義できるため、便利です。

lambda式の特徴

・関数を1行で定義できる

・他の関数の引数として利用する

lambda関数の用途

lambda関数は、

lambda 引数: 返り値

と定義します。

lambda x: x * 2   

#def関数のように名前を付けられますが、PEP8の規約では非推奨
lambda_func = lambda x: x * 2  # 引数はx、戻り値(処理)はx*2

lambda関数の利点を確認するためにdef関数と比較してみます。

def関数の例 名前が必要

defを使って簡単なプログラムを作成します。

def func_testdef(a):
    return a * 2

print(func_testdef(2))

---出力結果---
4

lamda関数の例 1行出かける

lambda関数は1行でかけますが、defのように名前をつけることも可能
→名前つけるならdefを使った方が良い

#lambda関数を使ってfunc_testdefと同じ処理をする
func_testlambda = lambda a: a * 2
print(func_testlambda(2))

---出力結果---
4

名前を付けないで1行でかく

#名前を付けないでfunc_testlambdaを使う
print((lambda a: a * 2)(2))

---出力結果---
4

いちいち関数を作らなくても処理をかけるのが良いが、この例だとlambda関数にする必要もないかも

map関数に利用する例

lambda関数は関数の引数に関数を渡すときに利用されるそうです。

よくある例がリストを作成するmap関数の引数にlambdaを利用する例です。

map関数は、定義してるlistに対して、functionの処理を行なって新しいリストを作るのに使います。

map関数は第一引数に関数、第二引数にリストを渡します。

map(function,list)

#第一引数にはlambda関数も渡せる
#第二引数にはリスト以外の集合、辞書、タプルも置ける

def関数の例:税込にするプログラム

#1.08をかける関数を作成
def function(a):
    return a * 1.08

prices = [100, 200, 300, 400, 500]

price_map = price_map = map(function, prices) 
第一引数の関数を第二引数のリストの要素に順番に適用して、結果を返す関数です。 
print(list(price_map))
[108.0, 216.0, 324.0, 432.0, 540.0]

lambda関数を利用する例

prices = [100, 200, 300, 400, 500]

price_lambda = map(lambda x: x*1.08, prices)
print(list(price_lambda))
[108.0, 216.0, 324.0, 432.0, 540.0]

若干短くなります。

リスト内包表記でもかける (補足)

リスト内包表記という記法でもリストを作成することができます。
リストを作成する場合であれば、内包表記でもシンプルに書けます。

prices = [100, 200, 300, 400, 500]

prices_tax = [i * 1.08 for i in prices]
print(prices_tax)
[108.0, 216.0, 324.0, 432.0, 540.0]
内包表記の意味と使い方

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です