リストのソート | リストのソートと検索 | Python本格超入門

スポンサーリンク

スポンサーリンク

リストのソート

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() 関数を使い分けることで、リストを効率的に並べ替えることができます。また、カスタムソートや降順ソートなど、多彩なオプションが用意されており、あらゆるニーズに対応できます。次回は、リストの検索について解説します。