Python で Lambda 関数を使用する方法 (匿名関数)
Python でラムダ関数を使用する方法を学びます。匿名関数、インライン コールバック、ラムダ キーを使用したリスト データの並べ替えをマスターします。
概要
Python では、関数は第一級市民です。つまり、関数を変数に代入したり、引数として他の関数に渡したり、関数から返すことができます。標準関数は `def` キーワードを使用して宣言されますが、Python は匿名インライン関数を作成するための短縮構文、つまり `lambda` 関数も提供します。
ラムダ関数は、「lambda」キーワード、その後に引数のリスト、コロン、および 1 つの式を続けて定義します。構文は「ラムダ引数: 式」です。 「def」関数とは異なり、ラムダは「return」ステートメントを必要としません。式の結果は自動的に返されます。これらは単一の論理行に制限されているため、単純な 1 回限りの操作に最適です。
Lambda 関数は、`sorted()`、`map()`、`filter()` などの高階関数への引数として最も一般的に使用されます。たとえば、ラムダ関数を `sorted()` の `key` 引数に渡してカスタムの並べ替え基準を定義したり、それらをグラフィカル アプリケーションまたはイベント駆動型アプリケーション内で軽量のコールバック関数として使用したりできます。
コードと実行の出力
このスクリプトは、lambda を使用して軽量の匿名関数を構築する方法を示します。
# 1. Simple lambda function assigned to a variable
double = lambda x: x * 2
print("Double of 5:", double(5))
# 2. Multi-argument lambda
add = lambda x, y: x + y
print("Sum of 3 + 4:", add(3, 4))
# 3. Using lambda as a sorting key (sorting by age)
people = [
{"name": "Alice", "age": 28},
{"name": "Bob", "age": 22},
{"name": "Charlie", "age": 35}
]
people.sort(key=lambda person: person["age"])
print("Sorted by age:", people)Double of 5: 10
Sum of 3 + 4: 7
Sorted by age: [{'name': 'Bob', 'age': 22}, {'name': 'Alice', 'age': 28}, {'name': 'Charlie', 'age': 35}]段階的な実装
- lambda キーワードの後にカンマ区切りのパラメーター名を記述します。
- コロンを入力し、その後に評価して返す単一の式を入力します。
- ラムダを、sorted()、map()、filter() などの関数へのコールバックとして直接渡します。
よくある質問
ラムダ関数にはループや複数のステートメントを含めることはできますか?
いいえ、Python のラムダ関数は単一の式に厳密に制限されています。複雑なロジック、ループ、または変数の割り当てが必要な場合は、def を使用して標準関数を定義する必要があります。
ラムダ関数を変数に代入する必要がありますか?
一般的にはノーです。 PEP 8 ガイドラインでは、標準関数の方がより適切なスタック トレース名を提供するため、ラムダを変数に割り当てる代わりに標準の def ステートメントを使用することを推奨しています。
関連トピック
推奨される Python リソース
関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。
Python 関数
Python 関数をマスターします。 def を使用して再利用可能なコードを作成する方法、引数を定義する方法、戻り値を定義する方法、ローカルおよびグローバルなスコープを理解する方法を学びます。
Python 数学モジュール関数のチートシート
Python 数学標準ライブラリのクイック リファレンス ガイド。三角関数、対数関数、丸め関数、算術関数の使用方法を学びます。
Python と JavaScript: どちらのプログラミング言語が最適ですか?
Python と JavaScript の包括的な比較。構文の違い、パフォーマンス、使用例 (バックエンドとフロントエンド)、およびコーディング例を調べます。