1. はじめに
Pythonでリストを扱う際に頻繁に登場するのが「sort()」と「sorted()」です。
本記事では、Python|リストの並び替え(sort・sorted)の使い方を解説というタイトルのもと、リストを昇順・降順に並び替える基本から、応用例、エラー対策までを丁寧に解説します。
これらの関数を使いこなすことで、データの整列・ランキング・ソート処理など、日常的なプログラムの可読性と効率が大きく向上します。
2. Pythonのsort()とsorted()の基本解説
sort()とsorted()の違い
Pythonでリストを並び替える方法は大きく2つあります。sort()
はリストそのものを変更し、sorted()
は並び替えた新しいリストを返します。
sort()の基本的な使い方
numbers = [5, 2, 9, 1, 7]
numbers.sort() # 昇順に並び替え
print(numbers)
出力結果:
[1, 2, 5, 7, 9]
sorted()の基本的な使い方
numbers = [5, 2, 9, 1, 7]
sorted_numbers = sorted(numbers) # 新しいリストを返す
print(sorted_numbers)
print(numbers) # 元のリストは変わらない
出力結果:
[1, 2, 5, 7, 9] [5, 2, 9, 1, 7]
3. よくある使い方・応用例
降順に並び替える方法
reverse=True
を指定することで、降順に並び替えることができます。
numbers = [5, 2, 9, 1, 7]
numbers.sort(reverse=True)
print(numbers)
出力結果:
[9, 7, 5, 2, 1]
key引数を使ったカスタム並び替え
文字列リストを「文字数」で並び替えるような応用も可能です。
words = ["banana", "fig", "apple", "cherry"]
words.sort(key=len) # 文字数の短い順に並び替え
print(words)
出力結果:
['fig', 'apple', 'banana', 'cherry']
辞書リストを値で並び替える
実務でよく使われるのが、辞書リストの特定キーを基準にしたソートです。
data = [
{"name": "Alice", "score": 88},
{"name": "Bob", "score": 95},
{"name": "Charlie", "score": 70}
]
sorted_data = sorted(data, key=lambda x: x["score"])
print(sorted_data)
出力結果:
[{'name': 'Charlie', 'score': 70}, {'name': 'Alice', 'score': 88}, {'name': 'Bob', 'score': 95}]
4. 注意点・エラー対策
異なる型を混在させるとエラーになる
リストに異なる型(例:整数と文字列)が混在していると並び替え時にエラーになります。
mixed = [3, "apple", 7]
# エラー:'<' not supported between instances of 'str' and 'int'
sorted(mixed)
対策: 型を統一するか、key
関数で適切な変換処理を行う必要があります。
sort()は破壊的変更をする
sort()
はリストを変更してしまうため、元の順序を保持したい場合にはsorted()
を使いましょう。
Noneが混在する場合の処理
None
が混じっていると比較できずエラーになります。
その場合、key
引数で代替値を与えることで対処できます。
values = [5, None, 2]
# エラーになるため keyでNoneを大きな値に置換
sorted_values = sorted(values, key=lambda x: (x is None, x))
print(sorted_values)
出力結果:
[2, 5, None]
5. まとめ
- sort()はリストを直接並び替える。破壊的。
- sorted()は新しい並び替え済みリストを返す。非破壊的。
reverse
やkey
引数を活用することで応用が広がる。
リストの並び替えは、データ処理・表示順制御・ランキング機能など実務でも非常に活用される場面が多いです。
特に、辞書リストの並び替えは現場でも頻出の処理なので、早めに慣れておくと後々役立ちます。
独学中の方は、自分で並び替え条件を設定してみるという練習を通じて、より理解が深まるでしょう。