Pythonの予約語「lambda」の解説
lambdaとは何か
lambdaは、Pythonで無名関数(匿名関数)を定義するための予約語です。通常のdef
で定義される関数とは異なり、lambda
式は関数に名前を付けず、短い処理をその場で記述して使用します。lambda
は一行で表現できる関数に最適です。
lambdaの基本的な構文
lambda関数の基本構文は以下の通りです:
lambda 引数: 式
この構文では、引数を指定し、それに対して実行する式を記述します。lambda
式の結果は、式の評価結果として返されます。
例: 2つの数を加算するlambda式
# 2つの引数を受け取り、その和を返すlambda式
add = lambda x, y: x + y
result = add(3, 4)
print(result) # 出力: 7
このコードでは、lambda
式を使って加算を行う無名関数を作成し、それをadd
という変数に格納しています。add(3, 4)
を呼び出すと、3と4の和である7が出力されます。
lambdaの応用例
リスト内の要素を条件に基づいてフィルタリングする
# リスト内の偶数のみを抽出
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 出力: [2, 4, 6, 8, 10]
この例では、filter
関数とlambda
式を組み合わせて、リスト内の偶数だけを抽出しています。lambda x: x % 2 == 0
は、リストの各要素が2で割り切れるかを確認し、True
であればリストに残します。
リスト内の要素を変換する
# リストの各要素を2倍にする
doubled_numbers = list(map(lambda x: x * 2, numbers))
print(doubled_numbers) # 出力: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
この例では、map
関数とlambda
を使って、リスト内の各要素を2倍にしています。lambda
式は各要素に対して適用され、その結果が新しいリストとして返されます。
lambdaと通常の関数定義の違い
lambda
と通常のdef
で定義された関数にはいくつかの違いがあります。lambda
は簡単な式に適していますが、複雑な処理を行う場合はdef
を使った関数定義が推奨されます。
特徴 | lambda | def |
---|---|---|
使用方法 | 無名関数として短い式を記述 | 名前付き関数として複雑な処理を記述 |
コードの可読性 | 単純な処理に最適 | 複雑な処理に適した構文 |
使い方 | 一行で記述、即席の処理に使用 | 複数行で構造化された関数を記述 |
lambdaを使うべきケース
lambda
は、簡単な関数が必要な場合に便利です。以下は、lambda
を使うべき典型的なケースです。
- 即席の一時的な関数が必要な場合: 一度しか使わない簡単な処理には
lambda
が適しています。 - 高階関数の引数として:
map
、filter
、sorted
などの高階関数に渡す関数として便利です。
まとめと注意点
lambda
は、Pythonで無名関数を定義するために使用され、簡単な処理を記述するのに最適です。- 通常の関数定義と比べて構文が簡潔ですが、複雑なロジックには適していません。
- 高階関数と組み合わせることで、短く簡潔なコードが記述できますが、可読性を保つために適切な場面で使用することが重要です。