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
による匿名関数を定義します。二つの引数x
とy
を取り、その和を返します。- 定義した匿名関数
add
をprint
関数で実行し、結果を出力します。
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, 2, 3, 4, 5]
を定義します。 map()
関数を使用して、各要素にラムダ関数を適用します。ラムダ関数は、各数値を3倍にする式lambda x: x * 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
解答の手順:
- 2つの数値
7
と10
を定義します。 lambda a, b: a if a > b else b
という条件式を使ったラムダ関数を定義します。- このラムダ関数に2つの数値を渡して結果を出力します。
解答:
max_num = lambda a, b: a if a > b else b
print(max_num(7, 10))
3.3. 例題 3:文字列の並び替え
文字列リストを、各文字列の長さをキーとして並べ替えるコードを作成してください。
期待される出力:
['a', 'cat', 'hello', 'elephant']
解答の手順:
- 文字列のリスト
['hello', 'a', 'cat', 'elephant']
を定義します。 sorted()
関数とラムダ関数lambda x: len(x)
を使って、文字列の長さに基づいてリストをソートします。- ソートされたリストを出力します。
解答:
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, 2, 3, 4, 5, 6, 7, 8, 9]
を定義します。 filter()
関数を使用し、各要素にラムダ関数lambda x: x % 2 == 0
を適用して偶数のみを抽出します。- 結果をリストに変換して出力します。
解答:
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, 2, 3, 4, 5]
を定義します。 map()
関数とラムダ関数lambda x: x ** 2
を使って、リスト内の各要素を二乗します。- 結果をリストに変換して出力します。
解答:
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)
check
Pythonの基本から応用まで、幅広くカバーする記事を公開中です。学習のポイントや実践的なコード例を通じて、Pythonの魅力と実用性を深く理解することができます。ぜひ、こちらの記事で気になる記事を見つけてください!
PR