未分類

【Python】第3章第4回:ラムダ関数の基本と応用

本記事では、Pythonのラムダ関数の基本的な使い方と応用例について学びます。ラムダ関数を活用することで、短く簡潔なコードを記述できるようになります。

0. 記事の概要

この記事を読むメリット

  • ラムダ関数の基本を理解:シンプルな無名関数の使い方を学べます。
  • コードの簡略化:簡潔で効率的なコード記述が可能になります。
  • 応用力を向上:ラムダ関数を使った実践的なプログラムが書けるようになります。

この記事で学べること

  • ラムダ関数の定義と基本的な使い方
  • ラムダ関数を使った応用例
  • ラムダ関数を活用したコードの簡略化

1. ラムダ関数の基本

1.1 ラムダ関数とは?

ラムダ関数とは、無名関数(名前を持たない関数)の一種です。lambdaキーワードを使って簡潔に定義できます。

# ラムダ関数の基本
square = lambda x: x ** 2
result = square(4)
print(f"4の平方: {result}")
動作解説
  1. lambda x: x ** 2: 引数xを平方するラムダ関数を定義します。
  2. square(4): 定義したラムダ関数を呼び出し、4を引数として渡します。
  3. 結果が変数resultに格納され、出力されます。

1.2 ラムダ関数の特性

ラムダ関数の特徴として、以下が挙げられます。

  • 1行で簡潔に記述できる
  • 複数の引数を受け取れる
  • 一時的な用途に適している

2. ラムダ関数を使った実践例

2.1 ラムダ関数とmap関数

ラムダ関数は、map関数と組み合わせることで、リスト内の要素に一括で処理を適用する際に役立ちます。

# ラムダ関数とmap関数
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(f"平方されたリスト: {squared_numbers}")
動作解説
  1. map(lambda x: x ** 2, numbers): リストnumbers内の各要素をラムダ関数で平方します。
  2. list(): mapオブジェクトをリストに変換します。
  3. 結果がsquared_numbersに格納され、出力されます。

2.2 ラムダ関数とfilter関数

ラムダ関数は、filter関数と組み合わせて条件に合う要素を抽出する際に役立ちます。

# ラムダ関数とfilter関数
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(f"偶数のみのリスト: {even_numbers}")
動作解説
  1. filter(lambda x: x % 2 == 0, numbers): リストnumbers内の偶数のみを抽出します。
  2. list(): filterオブジェクトをリストに変換します。
  3. 結果がeven_numbersに格納され、出力されます。

3. ラムダ関数を使った応用例

ラムダ関数を使って、リスト内の要素をソートします。

# ラムダ関数を使ったソート
students = [("太郎", 85), ("花子", 92), ("次郎", 78)]
sorted_students = sorted(students, key=lambda student: student[1], reverse=True)
print(f"スコアでソートされた学生リスト: {sorted_students}")
動作解説
  1. sorted(): リストstudentsをソートします。
  2. key=lambda student: student[1]: 2番目の要素(スコア)を基準にソートします。
  3. reverse=True: 降順にソートします。

4. 練習問題

以下の課題に挑戦してみましょう。

  1. リスト内の文字列をすべて大文字に変換するラムダ関数を作成してください。
  2. 複数のリストの要素を足し合わせるラムダ関数をmapと組み合わせて実装してください。

5. 練習問題の解答と解説

問1の解答例

# リスト内の文字列を大文字に変換
words = ["python", "lambda", "function"]
uppercase_words = list(map(lambda word: word.upper(), words))
print(f"大文字のリスト: {uppercase_words}")

問2の解答例

# 複数リストの要素を足し合わせる
list1 = [1, 2, 3]
list2 = [4, 5, 6]
summed_list = list(map(lambda x, y: x + y, list1, list2))
print(f"合計されたリスト: {summed_list}")

6. まとめ

ラムダ関数は短く簡潔なコードを記述するのに役立ちます。基本を理解した上で、mapfilterとの組み合わせを練習し、応用例にも挑戦してみましょう。