\

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()の主な違いと使用時のガイドラインです。適切な関数を選択することで、コードの効率と可読性を向上させることができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です