8.1 リストのソート
Pythonでのリストのソートは重要な操作で、データを分析や表示のために整理することができます。 Pythonはリストをソートするいくつかの方法を提供しており、タスクや求められる結果に応じてそれぞれが役立ちます。
sort()
メソッド
sort()
メソッドはリストをその場でソートします、つまり元のリストを変更します。
これは非常に効率的で、引数を介してソートをカスタマイズすることができます。
numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers) # 出力:[1, 2, 5, 9]
reverse=True
引数を設定することでリストを逆順にソートすることができます。
numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers) # 出力:[9, 5, 2, 1]
sorted()
関数
sorted()
関数は、元のリストをソートした新しいリストを作成します。
このとき元のリストは変更されないため、元のデータをそのまま保持する必要がある場合はsorted()
が好ましい選択となることがよくあります。
numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # 出力:[1, 2, 5, 9]
print(numbers) # 元のリストは変更されていません:[5, 2, 9, 1]
sort()
はオリジナルのリストを変更し、sorted()
は新しいソートされたリストを返し、オリジナルはそのままにします。
データをその場で変更する必要がある場合はsort()
を使用し、元のデータの順序を保持したい場合はsorted()
を使用します。
8.2 キーによるソート
時には複雑なソートシナリオや、特定のパラメータを無視したソートが必要になることがあります。
この場合、「キーによるソート」が役立ちます。それを使用するには、sort()
メソッドまたはsorted()
関数にkey
という特別なパラメーターを渡します。
key
パラメーターの値として、要素を比較するための関数を渡す必要があります。
大文字小文字を無視した文字列の比較
比較の前に、すべての文字列が小文字に変換されます
alist = ["banana", "Orange", "Kiwi", "cherry"]
alist.sort(key=str.lower)
print(alist) # 出力:['banana', 'cherry', 'Kiwi', 'Orange']
タプルのリストのソート例
例えば、学生のリストがあり、各要素は(tuple)
で、学生の名前とその成績を含んでいるとします。
学生を成績順にソートしたい場合:
students = [('Alice', 88), ('Bob', 75), ('Carol', 96)]
def get_grade(student):
return student[1]
students.sort(key=get_grade)
print(students) # 出力:[('Bob', 75), ('Alice', 88), ('Carol', 96)]
辞書のリストのソート例
または、学生情報を含む辞書のリストがあるとします。 成績でそれらをソートするには、次のようなコードを書く必要があります:
students = [
{'name': 'Alice', 'grade': 88},
{'name': 'Bob', 'grade': 75},
{'name': 'Carol', 'grade': 96}
]
def get_grade(student):
return student['grade']
sorted_students = sorted(students, key=get_grade)
print(sorted_students) # 出力:[{'name': 'Bob', 'grade': 75}, {'name': 'Alice', 'grade': 88}, {'name': 'Carol', 'grade': 96}]
GO TO FULL VERSION