lambdaとは?
Pythonのlambdaは、名前を持たない小さな関数を作成するための機能で、無名関数とも呼ばれます。通常のdef文で定義する関数とは異なってlambda関数は1行で記述でき、式として扱われるため、他の関数の引数として直接渡すことができます。主にmap関数やfilter関数、sort関数などと組み合わせて使用され、コードがより短く、読みやすくなります。
なお、lambda関数は簡単な計算や条件の判定には便利ですが、複雑な処理には向いていません。この特性を理解することで、適切な場面でlambda関数を使えるようになりましょう。
【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング
基本構文
lambdaの基本的な書き方は「lambda 引数: 戻り値」という形式です。普通の関数を定義する時と比べてdefや関数名、return文がいらないのでとてもシンプルです。
出力結果
8
8
引数が1つだけの場合はさらにシンプルになります。また、lambda関数を変数に代入しておけば、後から何度でも利用することが可能です。
出力結果
16
14
実用例
lambda関数が真価を発揮するのは、他の関数と組み合わせて使うときです。map関数やfilter関数、sort関数などと組み合わせることで、データ処理が格段に効率がよくなります。
ここでは、実際のプログラミングでよく使われる場面を想定したコード例を8つ紹介します。これらの例を見れば、lambda関数がどのような場面で役立つのかを理解できるでしょう。
リストの各要素を変換する処理
map関数とlambda関数を一緒に使うことで、リスト内の全ての要素に同じ処理を実行できます。この例では動物の名前リストの各要素を、すべて大文字に変換しています。
出力結果
['CAT', 'DOG', 'RABBIT', 'HAMSTER']
条件に合う要素を抽出する処理
filter関数とlambda関数を組み合わせることで、特定の条件を満たす要素だけを抽出できます。この例では、文字数が3文字以上の動物の名前だけを取り出しています。
出力結果
['ウサギ', 'ハムスター']
数値リストの並び替え処理
sort関数のkeyという引数にlambda関数を渡すことで、並び替えるための独自のルールを設定することができます。ここでは、動物の体重データを昇順で並び替えています。
出力結果
[('ハムスター', 0.15), ('ウサギ', 2.1), ('ネコ', 4.5), ('イヌ', 12.3)]
辞書データの並び替え処理
辞書のリストを特定のキーを基準にして並び替える際にもlambda関数が活躍します。ここでは、動物の年齢データを年齢の若い順に並ぶようにする、実用的な例を紹介します。
出力結果
[{'name': 'ウサギ', 'age': 2}, {'name': 'ネコ', 'age': 3}, {'name': 'イヌ', 'age': 7}]
数値演算の一括処理
lambda関数を使えば、数値のリストに対して計算処理を効率的に行えます。動物の体重を2倍にする処理を通して、数値を変換する実用的な方法を紹介します。
出力結果
[9.0, 24.6, 4.2, 0.3]
文字列の部分抽出処理
lambda関数を使って、文字列の一部を抽出する処理も可能です。この例では、動物の名前から最初の文字だけを取得して、頭文字のリストを作成しています。
出力結果
['ネ', 'イ', 'ウ', 'ハ', 'カ']
複合条件でのフィルタリング処理
複数の条件を同時に満たすデータを抽出する際にも、lambda関数を使えば簡潔に記述できます。この例では、体重が5kg以上でかつ年齢が5歳未満の動物だけを取り出しています。
出力結果
[('ブタ', 15.2, 4)]
最大値・最小値の検索処理
max関数やmin関数のkey引数にlambda関数を使用することで、複雑なデータの中からでも最大値や最小値を効率よく見つけられます。
ここでは、動物のデータから最も軽い動物を検索する例を紹介します。
出力結果
('ハムスター', 0.15)
まとめ
lambda関数は、短い処理を効率的に記述するための便利な機能です。無名関数として1行で処理を表現でき、map関数やfilter関数といった関数と組み合わせることで、データ処理が格段にスムーズになります。
この関数を適切に活用することで、コードが読みやすくなり、管理のしやすさが向上するでしょう。
Python lambdaの活躍する場面
- リストやタプルの要素に、一時的な変換処理を加えたいとき
- データを並び変えたり絞り込んだりするときに、カスタム条件を簡単に指定したいとき
- map関数やfilter関数などの他の関数の引数に渡すための、簡潔な処理ロジックとして使いたいとき
重要なポイント
- 簡単な処理だけに使って、複雑な処理はdefを使った通常の関数で実装すること
- 無理に1行で書こうとせず、コードの読みやすさを優先し、過度に複雑なlambda式は避けること
- デバッグが難しくなるため、lambda関数を使うべき場面かをよく考えてからの使用を心がけること
lambda関数を理解することで、Pythonプログラミングの表現力が大きく広がります。基本的な構文から実用的な活用方法まで習得し、効率的なコード作成に役立ててください。