Python Lambda 関数: 匿名関数ガイド

Python で匿名ラムダ関数を作成する方法を学びます。ラムダ構文でmap()、filter()、sorted()を使用して関数型プログラミングのパターンをマスターします。

エディターで試してみる

概要

Python では、匿名関数としても知られるラムダ関数は、標準の `def` キーワードや正式な名前を必要としない、小さくて速い 1 行の関数です。これらは一時的で迅速な使用を目的としており、関数ロジックを引数としてインラインで直接渡すことができます。これにより、コードがよりコンパクトになり、1 か所でのみ呼び出される本格的なヘルパー関数を作成するオーバーヘッドが軽減されます。

ラムダ関数の構文は「ラムダ引数: 式」という単純なものです。標準関数とは異なり、ラムダには明示的な `return` ステートメントがありません。式は自動的に評価されて返されます。さらに、ラムダ関数は単一の式に制限されているため、複雑な複数行のループ、代入、条件ブロックをラムダ関数内に記述することができず、クリーンで関数的なアプローチが強制されます。

Lambda 関数は、一般に、「map()」 (リスト内のすべての項目に関数を適用する)、「filter()」 (条件に一致する項目を保持する)、「sorted()」 (カスタムソートキーを使用して項目をソートする) などの組み込みの高階関数と組み合わせて使用されます。たとえば、ラムダを並べ替えキーとして使用すると、特定の辞書キーで辞書のリストを簡単に並べ替えることができます。ラムダ関数を理解すると、きれいな Python コードを作成するための重要なツールが得られます。

コードと実行の出力

インライン匿名関数を使用した複雑な辞書リストの並べ替えとデータセットのフィルタリング。

# Sorting using lambda
students = [
    {"name": "Alice", "grade": 88},
    {"name": "Bob", "grade": 95},
    {"name": "Charlie", "grade": 90}
]

# Sort students by grade (descending)
sorted_students = sorted(students, key=lambda s: s["grade"], reverse=True)
print("Sorted students by grade:")
for student in sorted_students:
    print(f"- {student['name']}: {student['grade']}")

# Filtering using lambda
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
odd_numbers = list(filter(lambda x: x % 2 != 0, numbers))
print(f"\nOdd numbers: {odd_numbers}")
端子出力
Sorted students by grade:
- Bob: 95
- Charlie: 90
- Alice: 88

Odd numbers: [1, 3, 5, 7]

段階的な実装

  • カスタムの並べ替え基準を list.sort() とsorted() に渡す
  • データ サイエンス パイプラインでのインライン変換の適用
  • イベント駆動型 UI アプリでのクイック コールバックの定義

よくある質問

ラムダ関数は複数の引数を取ることができますか?

はい、カンマで区切って複数の引数を定義できます (例: lambda x, y: x + y)。

ラムダ関数が匿名と呼ばれるのはなぜですか?

ローカル名前空間に特定の名前を登録する def 関数とは異なり、名前バインディングなしで作成されるためです。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。