Pythonにはリストをソートするための組み込み関数があります。それはlist.sort()
とsorted()
です。
list.sort()とsorted()の違い
list.sort()
はリストをインプレース(元の場所)で変更します。一方、sorted()
は新しいソートされたリストを作成します。
a = [5, 2, 3, 1, 4]
a.sort()
print(a) # [1, 2, 3, 4, 5]
keyパラメータ
list.sort()
とsorted()
には、比較を行う前に各リスト要素に対して呼び出される関数を指定するためのkey
パラメータがあります。
student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
sorted(student_tuples, key=lambda student: student[2]) # 年齢でソート
# [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
operatorモジュール
Pythonは、アクセサ関数をより簡単かつ高速にするための便利な関数を提供しています。operator
モジュールにはitemgetter()
, attrgetter()
, methodcaller()
関数があります。
from operator import itemgetter, attrgetter
sorted(student_tuples, key=itemgetter(2))
# [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
これらの情報を活用して、Pythonでリストを効率的にソートすることができます。