Pythonのラムダ式(lambda式)は、「無名関数」とも呼ばれる、関数名を持たない関数を簡潔に定義できる構文です。通常の関数(def文)と比べて、短く一行で書けるため、ちょっとした処理や一時的な関数が必要な場面で活用されます。
ラムダ式とは
ラムダ式(lambda式)とは、名前を持たない関数(無名関数、匿名関数)を簡潔に定義するための構文です。通常の関数は def
キーワードを使って名前付きで定義しますが、ラムダ式は関数名を付けずに一時的な処理や短い処理をその場で記述したいときに利用されます。
ラムダ式は、無名関数(名前を持たない関数)を簡単に作成するためのシンタックスです。
Pythonでは、関数を他の関数の引数として渡すことがよくあります。ラムダ式は、そのような場面で「わざわざ関数名を付けるほどではない」小さな処理を簡潔に記述できるのが特徴です。
ラムダ式の基本構文
lambda 引数1, 引数2, ...: 式
lambda
:キーワード引数1, 引数2, ...
:関数の引数(カンマ区切りで複数指定可)式
:返したい値を計算する式(1つのみ記述可能)
例:
add = lambda x, y: x + y
print(add(3, 5)) # 出力: 8
この例では、x
とy
を受け取り、その和を返す無名関数を定義しています。
ラムダ式の特徴と使いどころ
特徴
- 名前を持たない(無名関数)
- 1行で簡潔に記述できる
- 1つの式しか書けない(複数文は不可)
- 関数の引数として渡す用途に最適
主な使いどころ
map()
、filter()
、sorted()
など、関数を引数に取る場面- 一時的な処理やコールバック関数として
- わざわざ関数名を付けるほどではない簡単な処理
ラムダ式の実用例
1. map関数との組み合わせ
a = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x * x, a))
print(squared) # [1, 4, 9, 16, 25]
リストの各要素を2乗する処理を簡潔に書けます。
2. filter関数との組み合わせ
nums = [0, 1, 2, 3, 4, 5]
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens) # [0, 2, 4]
偶数だけを抽出する場合に便利です。
3. sorted関数との組み合わせ
words = ['apple', 'banana', 'cherry']
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words) # ['apple', 'banana', 'cherry']
要素の長さでソートするなど、カスタムなソート条件を簡単に指定できます。
ラムダ式と通常の関数(def)の違い
特徴 | ラムダ式(lambda) | 通常の関数(def) |
---|---|---|
名前 | なし(無名) | あり(関数名を付ける) |
本体 | 1つの式のみ | 複数の文が書ける |
用途 | 一時的・簡単な処理 | 複雑・再利用する処理 |
可読性 | シンプルだが複雑だと低下 | わかりやすい |
ラムダ式利用時の注意点・ベストプラクティス
- 複雑な処理には不向き:複雑なロジックはdefで関数化し、可読性を保つ。
- PEP8の推奨:名前をつけて使うならdef、無名で使うならlambdaを使うのが推奨されています。
- 使いすぎ注意:多用しすぎると可読性が落ちるため、使いどころを見極めることが重要です。
まとめ
Pythonのラムダ式は、簡潔な無名関数をその場で定義できる便利な機能です。主にmap、filter、sortedなどの関数と組み合わせて使うことで、コードを短く、読みやすくできます。ただし、複雑な処理や再利用性のある処理にはdef文を使い、可読性とメンテナンス性を意識して使い分けましょう。
コメント