Pythonのラムダ式をsorted関数で使う方法!初心者でもわかるデータの並べ替え
生徒
「Pythonでリストの中身を特定の条件で並べ替えたいんですが、どうやったらいいですか?」
先生
「Pythonのsorted関数を使うと簡単に並べ替えができます。さらに、ラムダ式を使えば、自由に並べ替えの基準を指定できますよ。」
生徒
「ラムダ式って小さな関数のことですよね?それをどうやってsorted関数と一緒に使うんですか?」
先生
「はい、ラムダ式はその場で使う簡単な関数です。sorted関数のkey引数にラムダ式を渡すことで、並べ替えの基準を自由に指定できます。」
生徒
「具体的な例を教えてください!」
1. sorted関数とは?
Pythonのsorted関数は、リストやタプルなどのデータを昇順(小さい順)に並べ替えて新しいリストを返す関数です。元のデータは変更されません。
たとえば、数字のリストを小さい順に並べ替えるときに使います。
2. ラムダ式とは?
ラムダ式は「小さな匿名関数(名前のない関数)」で、1行で簡単に書ける関数のことです。
例えば、「2つの数字を足す関数」は通常こう書きます。
def add(a, b):
return a + b
ラムダ式ならこうなります。
lambda a, b: a + b
このように、簡単な処理を手軽に書けるのが特徴です。
3. sorted関数でラムダ式を使う理由
sorted関数は、keyという引数に「並べ替えの基準を指定する関数」を渡せます。ラムダ式をkeyに渡すと、リストの各要素から「この部分を基準に並べ替えてね」というルールを簡単に指定できます。
たとえば、辞書のリストを「年齢」や「名前」で並べ替えるときに便利です。
4. 例:数値のリストを絶対値で並べ替える
まずは数字のリストを絶対値の小さい順に並べ替える例です。
numbers = [3, -5, 1, -2, 4]
sorted_numbers = sorted(numbers, key=lambda x: abs(x))
print(sorted_numbers)
実行結果はこちらです。
[1, -2, 3, 4, -5]
ここでlambda x: abs(x)は「各要素の絶対値」を基準に並べ替えてね、という意味です。
5. 例:辞書のリストをキーの値で並べ替える
次は、複数の辞書が入ったリストを「年齢(age)」で並べ替える例です。
people = [
{"name": "田中", "age": 35},
{"name": "佐藤", "age": 22},
{"name": "鈴木", "age": 28},
]
sorted_people = sorted(people, key=lambda person: person["age"])
for p in sorted_people:
print(p)
実行結果はこちらです。
{'name': '佐藤', 'age': 22}
{'name': '鈴木', 'age': 28}
{'name': '田中', 'age': 35}
lambda person: person["age"]は、「各辞書の'age'の値」を基準に並べ替えてね、という意味になります。
6. 文字列のリストを長さで並べ替える例
文字列のリストを文字数の短い順に並べ替える例もあります。
words = ["りんご", "バナナ", "みかん", "キウイ"]
sorted_words = sorted(words, key=lambda w: len(w))
print(sorted_words)
実行結果はこちらです。
['キウイ', 'りんご', 'みかん', 'バナナ']
ラムダ式のlambda w: len(w)は「文字列の長さ」を返して並べ替えています。
7. sorted関数の注意点と補足
sortedは元のリストを変更せず、新しい並べ替えたリストを返します。元のリストを並べ替えたい場合は、リストのsort()メソッドを使いますが、こちらもkeyにラムダ式を指定できます。
また、reverse=Trueをつけると降順(大きい順)に並べ替えられます。
8. まとめではないですが最後に
Pythonのsorted関数とラムダ式を組み合わせることで、簡単に自由なルールでデータを並べ替えられます。慣れるまでは難しく感じるかもしれませんが、使いこなせるととても便利なので、ぜひ試してみてください。