Pythonには、リストをソートするための2つの主要な方法があります:list.sort()
とsorted()
です。これらの関数は似ていますが、重要な違いがあります。
list.sort()
list.sort()
は、リストをインプレース(元のリストを変更)でソートします。このメソッドは、元のリストを直接変更するため、元のリストの順序は失われます。また、list.sort()
は何も返さないため、このメソッドの結果を別の変数に代入しようとすると、その変数はNone
になります。
num_list = [4, 5, 6, 2, 1, 7, 8, 3, 5, 0, 2, 6, 3]
num_list.sort()
print(num_list) # [0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8]
sorted()
一方、sorted()
は任意のイテラブル(リスト、タプル、辞書、文字列など)を取り、すべての要素を含む新しいソートされたリストを返します。sorted()
は元のリストを変更せず、新しいソートされたリストを返すため、元のリストの順序は保持されます。
num_list = [4, 5, 6, 2, 1, 7, 8, 3, 5, 0, 2, 6, 3]
sorted_list = sorted(num_list)
print(sorted_list) # [0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 8]
print(num_list) # [4, 5, 6, 2, 1, 7, 8, 3, 5, 0, 2, 6, 3]
どちらを使うべきか
リストを変更したい場合や元の順序を保持する必要がない場合は、list.sort()
を使用します。一方、ソートしたいオブジェクトがイテラブルであり、すべての要素を含む新しいソートされたリストが必要な場合は、sorted()
を使用します。
リストに対しては、list.sort()
はsorted()
よりも高速です。なぜなら、list.sort()
はコピーを作成する必要がないからです。しかし、他のイテラブルに対しては、sorted()
を使用するしかありません。
以上がPythonのlist.sort()
とsorted()
の主な違いと使用時のガイドラインです。適切な関数を選択することで、コードの効率と可読性を向上させることができます。