🍁

lambda関数とは?

2023/11/23に公開

今回はPythonのlambda関数について解説します。

結論

引数 を受け取り、処理 の結果を返す関数

lambda 引数: 処理
add = lambda x, y: x + y
print(add(5, 3))
# 8

嬉しいこと

  • 簡潔さ
    lambda関数のメリットは簡潔さです。関数処理を1行で実装できるため、可読性が向上します。

  • 関数を引数として渡せる
    lambda関数は他の関数の引数として渡すことができ、高階関数(他の関数を引数として受け取る関数)との相性が良いです。(例:sorted、map、filter)

  • リストの要素を2倍(map)
    map関数と組み合わせることで、複雑な操作が可能になります。
# リストの要素を2倍
numbers = [1, 2, 3, 4]
doubled = lambda x: x * 2
all_doubled = map(doubled, numbers)
print(list(all_doubled))
# 出力
[2, 4, 6, 8]
  • リストの特定の要素に基づいて並び替え(sorted)
    リストの中の要素(年齢など)を基準にリストをsortできます。
# リストの特定の要素に基づいてsort
data = [
    {'name': 'John', 'age': 25},
    {'name': 'Doe', 'age': 30},
    {'name': 'Alice', 'age': 22},
    {'name': 'Bob', 'age': 27},
    {'name': 'Eve', 'age': 29}
]

sorted_data = sorted(data, key=lambda x: x['age'])
print(sorted_data)
# 出力
[
    {'name': 'Alice', 'age': 22}, 
    {'name': 'John', 'age': 25}, 
    {'name': 'Bob', 'age': 27}, 
    {'name': 'Eve', 'age': 29}, 
    {'name': 'Doe', 'age': 30}]

適していない場面

  • 複数回の呼び出し
    名前を持たないため、何度も繰り返し使用する場合は通常の関数を使用しましょう。
  • 複雑な処理
    簡潔性ゆえに、複雑な処理のカラムコードには適していません。1行で記述できる処理には限界があります。

よくわかんないなぁって人への補足

lambda関数は馴染みのない人には理解が難しい概念です。
そこで、通常の関数が理解できているのであれば、次のように考えるとわかりやすいかもしれません。

  • 関数名 = (lambda 引数: 処理)
    右辺のひとかたまりが、通常使用する関数名と同じであるイメージです。
# イメージ
add = (lambda x, y: x + y)

実際にコードでも同じ結果になります。

def add(x, y):
    return x + y

# add と (lambda x, y: x + y) は同じ使い方
result = add(5, 3)
print(result)
result = (lambda x, y: x + y)(5, 3)
print(result)
# 出力
8
8

普段使用する関数名が、そのまま (lambda 引数: 処理) に置き換わっていると考えると、少し理解できるのではないでしょうか。

まとめ

  • lambda関数
    引数 を受け取り、処理 の結果を返す関数

今回はlambda関数について解説しました。
最後まで読んでいただきありがとうございました!

Discussion