ラムダ式の定義と応用
Pythonのラムダ関数は、匿名関数とも呼ばれ、名前を持たない一行の関数を作成するための記法です。短い処理を関数として使いたい場合や、一時的な関数が必要な場合に便利です。本記事では、ラムダ式の基本的な定義方法と応用例を紹介します。
ラムダ式の基本的な定義
ラムダ式は、次の構文を使用して定義します。
lambda 引数1, 引数2, ...: 式
lambda
キーワードの後に引数を指定し、:
の後に処理内容(式)を書きます。例えば、2つの数値の和を求めるラムダ関数は以下のように定義できます。
# ラムダ式の基本例
add = lambda x, y: x + y
print(add(2, 3)) # 出力: 5
この例では、lambda
を使用して2つの引数を受け取り、それらの和を返す関数を定義しています。add(2, 3)
と呼び出すことで、結果として5が出力されます。
高階関数との併用
ラムダ式は、高階関数(map
、filter
、reduce
など)と組み合わせて使うことがよくあります。これにより、簡潔にコードを記述することができます。以下の例では、リスト内の各要素を2倍にするmap
関数とラムダ式を使用しています。
# map関数とラムダ式の例
numbers = [1, 2, 3, 4, 5]
doubled = list(map(lambda x: x * 2, numbers))
print(doubled) # 出力: [2, 4, 6, 8, 10]
このコードでは、lambda
を使ってリスト内の各要素を2倍にする処理を簡潔に記述しています。
条件式を含むラムダ式
ラムダ式には条件式も含めることができます。例えば、ある数が偶数であるかを判定するラムダ関数は以下のように定義できます。
# 条件式を含むラムダ式の例
is_even = lambda x: "偶数" if x % 2 == 0 else "奇数"
print(is_even(4)) # 出力: 偶数
print(is_even(5)) # 出力: 奇数
この例では、lambda
を使って条件式を含む処理を記述しています。与えられた数が偶数か奇数かを判定し、その結果を返します。
ラムダ式と通常の関数定義の違い
ラムダ式は、通常のdef
で定義される関数とはいくつかの点で異なります。主な違いを以下の表にまとめました。
項目 | ラムダ式 | 通常の関数(def) |
---|---|---|
定義の方法 | lambda式を使用し、名前を持たない | defキーワードを使用し、名前を持つ |
可読性 | 短い処理に適している | 複雑な処理に適している |
使用場面 | 一時的、簡単な関数 | 再利用可能で複雑な関数 |
ラムダ式の応用
ラムダ式は、他にもさまざまな場面で応用できます。以下は、リストをソートする際に、ラムダ式を使って特定の条件でソートする例です。
# ラムダ式を使ったソートの例
students = [("太郎", 25), ("花子", 22), ("次郎", 28)]
# 年齢でソート
sorted_students = sorted(students, key=lambda student: student[1])
print(sorted_students) # 出力: [('花子', 22), ('太郎', 25), ('次郎', 28)]
このコードでは、学生のリストを年齢でソートしています。ラムダ式を使うことで、シンプルにカスタムソートを実現しています。
まとめ
Pythonのラムダ式は、短くて一時的な処理を定義する際に非常に便利です。特に、高階関数と組み合わせて使う場面で、その利便性を発揮します。ただし、複雑な処理や再利用可能な関数が必要な場合は、def
を使った通常の関数定義が適しています。ラムダ式と通常の関数を適切に使い分けることで、コードの可読性や効率が向上します。