更新:2024/10/17

PythonのLambda関数の使い方・sortedのキーの使用方法・例題について

はるか
はるか
lambdaって知ってる?
ふゅか
ふゅか
うん!Pythonの匿名関数だよね。簡単に関数を定義できるんだって!

1. lambdaとは?

Pythonの匿名関数(無名関数)は、関数定義を簡潔に記述するための機能です。通常、匿名関数は一度しか使用されない、もしくは非常に短い関数を作成する際に使用されます。Pythonでは、lambdaキーワードを用いて匿名関数を定義します。

1.1. lambdaの基本的な構文

lambda 引数: 式

1.2. lambdaの特徴

  • returnが不要:return文が不要です。
  • 簡潔さ:小さな関数を記述する際にコードを簡潔に保つことができます。
  • 可読性の低下:匿名関数を多用しすぎると、コードの可読性が低下する可能性があります。

ふゅか
ふゅか
lambdaにはいくつか特徴があるね。例えば、returnが不要だったり。
はるか
はるか
簡潔に書ける。
ふゅか
ふゅか
でも、多用しすぎると可読性が下がるかも?
はるか
はるか
それも注意点。

2. lambdaを使用した例

2.1. 単純な関数

ふゅか
ふゅか
例えば、足し算の関数をlambdaで書くと…
# lambdaによる匿名関数
add = lambda x, y: x + y

print(add(2, 3))  # 出力: 5
  • lambda による匿名関数を定義します。二つの引数 xy を取り、その和を返します。
  • 定義した匿名関数 addprint 関数で実行し、結果を出力します。

2.2. リストとmapで使用

ふゅか
ふゅか
次はリストの各要素を2倍にする例を見てみよう!
numbers = [1, 2, 3, 4, 5]

# 各要素を2倍にする
doubled = list(map(lambda x: x * 2, numbers))

print(doubled)  # 出力: [2, 4, 6, 8, 10]
  • 数値のリスト numbers を定義します。
  • 各要素を2倍にするために map 関数と lambda 関数を使用します。
  • 各要素が2倍になったリストを print 関数で出力します。

2.3. ソート時のキー関数としての使用

ふゅか
ふゅか
最後に、ソートのキー関数としてlambdaを使う例も紹介するね。
points = [(1, 2), (4, 1), (5, 3), (2, 2)]

# y座標でソート
sorted_points = sorted(points, key=lambda point: point[1])

print(sorted_points)  # 出力: [(4, 1), (1, 2), (2, 2), (5, 3)]
  • 座標点のリスト points を定義します。
  • points を y 座標(各点の第2要素)でソートします。
  • ソートされた結果を print 関数で出力します。

3. 例題

3.1. 例題 1:要素の3倍

次のリストから、各数値を3倍にするラムダ関数を使って新しいリストを作成してください。

期待される出力:

[3, 6, 9, 12, 15]

解答の手順:

  1. 元のリスト [1, 2, 3, 4, 5] を定義します。
  2. map() 関数を使用して、各要素にラムダ関数を適用します。ラムダ関数は、各数値を3倍にする式 lambda x: x * 3 を含みます。
  3. map() の結果をリストに変換して出力します。

解答:

numbers = [1, 2, 3, 4, 5]
result = list(map(lambda x: x * 3, numbers))
print(result)

3.2. 例題 2:大小比較

ラムダ関数を使って、2つの数値のうち大きい方を返すコードを作成してください。

期待される出力:

7と10の比較
10

解答の手順:

  1. 2つの数値 710 を定義します。
  2. lambda a, b: a if a > b else b という条件式を使ったラムダ関数を定義します。
  3. このラムダ関数に2つの数値を渡して結果を出力します。

解答:

max_num = lambda a, b: a if a > b else b
print(max_num(7, 10))

3.3. 例題 3:文字列の並び替え

文字列リストを、各文字列の長さをキーとして並べ替えるコードを作成してください。

期待される出力:

['a', 'cat', 'hello', 'elephant']

解答の手順:

  1. 文字列のリスト ['hello', 'a', 'cat', 'elephant'] を定義します。
  2. sorted() 関数とラムダ関数 lambda x: len(x) を使って、文字列の長さに基づいてリストをソートします。
  3. ソートされたリストを出力します。

解答:

words = ['hello', 'a', 'cat', 'elephant']
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)

3.4. 例題 4:偶数の抽出

与えられたリストから、偶数のみを抽出するラムダ関数を作成してください。

期待される出力:

[2, 4, 6, 8]

解答の手順:

  1. 元のリスト [1, 2, 3, 4, 5, 6, 7, 8, 9] を定義します。
  2. filter() 関数を使用し、各要素にラムダ関数 lambda x: x % 2 == 0 を適用して偶数のみを抽出します。
  3. 結果をリストに変換して出力します。

解答:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)

3.5. 例題 5:要素の2乗

ラムダ関数を使って、与えられたリスト内の数値を二乗するコードを作成してください。

期待される出力:

[1, 4, 9, 16, 25]

解答の手順:

  1. 元のリスト [1, 2, 3, 4, 5] を定義します。
  2. map() 関数とラムダ関数 lambda x: x ** 2 を使って、リスト内の各要素を二乗します。
  3. 結果をリストに変換して出力します。

解答:

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)


check

Pythonの基本から応用まで、幅広くカバーする記事を公開中です。学習のポイントや実践的なコード例を通じて、Pythonの魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!

Pythonの記事のまとめ

PR