Pythonのラムダ式(lambda)とは?無名関数の基本をやさしく解説
先生と生徒の会話形式で理解しよう
生徒
「Pythonで、ちょっとした処理を簡単に書く方法ってありますか?」
先生
「ありますよ。lambdaという“ラムダ式”を使えば、わざわざ関数を作らなくても短く書けます。」
生徒
「ラムダ式って何ですか?」
先生
「ラムダ式は“無名関数”とも呼ばれていて、名前をつけずに使える関数のことです。今から基本を説明しますね!」
1. ラムダ式(lambda)とは?
Pythonのラムダ式(lambda)とは、関数に名前を付けずに、その場でサッと作れる無名関数のことです。
通常、関数を作るにはdefを使いますが、短い処理のために毎回名前を付けるのは面倒です。そんなとき、lambdaを使うと1行で書けます。
例えば、「数字を2倍にする」関数を作る場合、普通の関数だとこうなります。
def double(x):
return x * 2
print(double(5))
10
これをラムダ式で書くと、こうなります。
double = lambda x: x * 2
print(double(5))
10
ポイントは、lambda 引数: 処理というシンプルな書き方です。
2. ラムダ式の基本構文
ラムダ式の構文は以下の通りです。
lambda 引数1, 引数2, ... : 戻り値
特徴:
lambdaの後に引数を書く(引数が不要な場合は空でもOK):の後に戻り値となる処理を書く- 1行で完結する(複数行の処理は書けない)
3. 普通の関数とラムダ式の違い
ラムダ式とdefで作る関数の違いを比較しましょう。
# 通常の関数
def add(a, b):
return a + b
# ラムダ式
add_lambda = lambda a, b: a + b
print(add(3, 4))
print(add_lambda(3, 4))
7
7
どちらも結果は同じですが、ラムダ式の方が短く書けます。ただし、長い処理を書くと読みづらくなるため、シンプルな処理専用と覚えておきましょう。
4. ラムダ式の活用例
ラムダ式は単体でも使えますが、特に関数の引数として渡すときに便利です。
4-1. ソートで使う
data = [(1, "apple"), (3, "banana"), (2, "cherry")]
# 2番目の要素でソート
sorted_data = sorted(data, key=lambda x: x[1])
print(sorted_data)
[(1, 'apple'), (3, 'banana'), (2, 'cherry')]
4-2. filterで使う
numbers = [1, 2, 3, 4, 5, 6]
# 偶数だけを抽出
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)
[2, 4, 6]
4-3. mapで使う
numbers = [1, 2, 3]
# すべての要素を2倍に
doubled = list(map(lambda x: x * 2, numbers))
print(doubled)
[2, 4, 6]
5. ラムダ式を使うときの注意点
ラムダ式は便利ですが、以下の注意点があります。
- 1行でしか書けない(複雑な処理には不向き)
- 処理が長くなると可読性(読みやすさ)が下がる
- デバッグ時にエラーが出たとき、関数名がないため原因がわかりにくい
そのため、簡単な処理 → ラムダ式、複雑な処理 → 通常の関数という使い分けが大切です。