Pythonのリストに格納された要素を、特定の順番(昇順や降順)に並べ替えたい場面は頻繁に発生します。そんなときに役立つのが、リストが持つ**sort()
メソッド**です。
sort()
メソッドは、リストの要素を自動で並べ替え、リスト自体を直接変更します。この記事では、sort()
メソッドの基本的な使い方から、知っておくべき注意点までを解説します。
sort()
メソッドの基本
sort()
メソッドは、引数を指定しない場合、数値を昇順(小さい順)に、文字列をアルファベット順に並べ替えます。
# 数値のリスト
points = [85, 92, 78, 99, 55]
print(f"ソート前: {points}")
points.sort()
print(f"ソート後: {points}")
実行結果:
ソート前: [85, 92, 78, 99, 55]
ソート後: [55, 78, 85, 92, 99]
sort()
メソッドは、新しいリストを返さず、元のリストそのものを変更するという点が重要です。
文字列のソートと降順ソート
sort()
メソッドは文字列のリストにも同じように適用できます。
# メンバーの名前リスト
names = ["Emma", "Chris", "Ben", "David", "Alice"]
print(f"ソート前: {names}")
names.sort()
print(f"ソート後: {names}")
実行結果:
ソート前: ['Emma', 'Chris', 'Ben', 'David', 'Alice']
ソート後: ['Alice', 'Ben', 'Chris', 'David', 'Emma']
sort()
は、アルファベット順(辞書順)にリストを並べ替えます。
降順にソートする
sort()
メソッドの引数にreverse=True
を指定すると、並び順を逆転させ、**降順(大きい順)**にソートすることができます。
numbers = [85, 92, 78, 99, 55]
numbers.sort(reverse=True)
print(f"降順ソート: {numbers}")
names = ["Emma", "Chris", "Ben", "David", "Alice"]
names.sort(reverse=True)
print(f"逆アルファベット順: {names}")
実行結果:
降順ソート: [99, 92, 85, 78, 55]
逆アルファベット順: ['Emma', 'David', 'Chris', 'Ben', 'Alice']
sort()
メソッドの注意点
sort()
メソッドを使う際に、特に気をつけるべき点が二つあります。
1. 異なるデータ型はソートできない
sort()
メソッドは、リスト内の要素が同じデータ型(すべて数値、またはすべて文字列など)である必要があります。数値と文字列が混在するリストをソートしようとすると、Pythonはそれらをどのように比較すればよいか判断できないため、**TypeError
**というエラーが発生します。
# エラーになる例
mixed_list = [1, 5, 2, "A", "B", 4]
# mixed_list.sort() # この行を実行するとエラーになります
2. リスト自体が変更される
前述の通り、sort()
メソッドは新しいリストを生成するのではなく、元のリストを直接変更します。元のリストをそのまま残しておきたい場合は、sorted()
関数を使うという別の方法があります。
まとめ
今回は、リストの要素を並べ替えるsort()
メソッドについて解説しました。
list.sort()
:リストの要素を昇順に並べ替えます。list.sort(reverse=True)
:リストの要素を降順に並べ替えます。sort()
は、リスト自体を直接変更します。sort()
は、数値同士や文字列同士など、同じ種類の要素を持つリストに対してのみ使用できます。
これらの点を理解してsort()
を使いこなすことで、データを効率的に整理できるようになります。