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




