リストのソート
Pythonのリストは、簡単に要素をソートすることができます。リストのソートには主に2つの方法があります。sort() メソッドを使ってリスト自体をソートする方法と、sorted() 関数を使って新しいソート済みのリストを取得する方法です。本記事では、リストのソートに関する基本的な使い方と、ソート時のオプションについて詳しく解説します。
リストのソート方法
sort() メソッドは、リストをその場でソートし、元のリストを変更します。これに対し、sorted() 関数は新しいソートされたリストを返し、元のリストは変更されません。
# リストをその場でソートする
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()
print(numbers) # 出力: [1, 2, 5, 5, 6, 9]
# sorted()関数を使って新しいソートされたリストを作成
numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # 出力: [1, 2, 5, 5, 6, 9]
print(numbers) # 元のリストは変更されない: [5, 2, 9, 1, 5, 6]
昇順・降順のソート
デフォルトでは、リストは昇順(小さい順)にソートされますが、reverse=True を指定することで降順(大きい順)にソートすることもできます。
# 昇順でソート
numbers = [4, 7, 1, 3]
numbers.sort()
print(numbers) # 出力: [1, 3, 4, 7]
# 降順でソート
numbers.sort(reverse=True)
print(numbers) # 出力: [7, 4, 3, 1]
# sorted() でも同様に降順でソート可能
numbers = [4, 7, 1, 3]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers) # 出力: [7, 4, 3, 1]
カスタムソート
key 引数を使って、カスタムソートを行うことができます。たとえば、文字列のリストを長さ順にソートする場合は、key=len を指定します。
# 文字列のリストを長さ順にソート
words = ["apple", "banana", "cherry", "date"]
words.sort(key=len)
print(words) # 出力: ['date', 'apple', 'banana', 'cherry']
key 引数に指定する関数は、リストの各要素に適用され、その結果に基づいてソートが行われます。これにより、さまざまなカスタムソートが可能です。
ソートにおける注意点
| ポイント | 詳細 |
|---|---|
| 破壊的な操作 | sort()は元のリストを変更します。変更を避けたい場合はsorted()を使いましょう。 |
| ソートの安定性 | Pythonのソートは安定ソートです。同じ値が並んでいる場合でも、その順序は保持されます。 |
| カスタムソート | key引数を使うことで、複雑なソート条件を設定できます。 |
まとめ
Pythonのリストソートはシンプルかつ強力な機能です。sort() メソッドや sorted() 関数を使い分けることで、リストを効率的に並べ替えることができます。また、カスタムソートや降順ソートなど、多彩なオプションが用意されており、あらゆるニーズに対応できます。次回は、リストの検索について解説します。