🍁
lambda関数とは?
今回は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