Pythonでlistのソートをする方法
Pythonでリストをソートする方法について説明します。
Pythonのバージョン3では、リストのソートには主に2つの方法があります。
これらはsort()メソッドとsorted()関数です。
sort()メソッド
リストオブジェクトにはsort()メソッドがあり、これを使用するとリストそのものが昇順にソートされます。
このメソッドはリストを直接変更するため、新しいリストは返されません。
以下はsort()メソッドを使用する例です。
numbers = [4, 2, 9, 1, 5, 6] numbers.sort() print(numbers) # 出力: [1, 2, 4, 5, 6, 9]
sort()メソッドは、リストの要素が比較可能である必要があります。
数値、文字列、日付などは比較可能ですが、異なる型の要素が混在するリストをソートすることはできません。
また、sort()メソッドには、オプションの引数reverseがあり、これをTrueに設定すると降順にソートすることができます。
numbers = [4, 2, 9, 1, 5, 6] numbers.sort(reverse=True) print(numbers) # 出力: [9, 6, 5, 4, 2, 1]
sorted()関数
一方で、sorted()関数は元のリストを変更せず、新しいソート済みリストを返します。
こちらもreverse引数を指定することができます。
以下はsorted()関数を使用する例です。
numbers = [4, 2, 9, 1, 5, 6] sorted_numbers = sorted(numbers) print(sorted_numbers) # 出力: [1, 2, 4, 5, 6, 9] print(numbers) # 出力: [4, 2, 9, 1, 5, 6]
この場合、元のリストnumbersは変更されず、sorted_numbersにソートされたリストが格納されます。
sorted()関数にもkey引数があり、ソートの基準を指定することができます。
例えば、文字列のリストをその長さでソートする場合、次のようにkey引数を使います。
words = ['banana', 'apple', 'cherry', 'date'] sorted_words = sorted(words, key=len) print(sorted_words) # 出力: ['date', 'apple', 'banana', 'cherry']
ソートの安定性
Pythonのsort()メソッドおよびsorted()関数は安定ソートを行います。
つまり、同じ値を持つ要素の順序は元の順序が保たれます。
その他の注意点
- ソート可能なデータ型である必要があります。
比較不可能なデータ型が含まれているリストはソートできません。
- key引数には関数やラムダ式を指定して、カスタムのソート順序を定義することができます。
- パフォーマンス面では、sort()メソッドはリストをその場で変更するため、メモリの使用が少なくて済みますが、sorted()関数は新しいリストを生成するため、メモリの使用が増える可能性があります。
以上が、Pythonでリストをソートする基本的な方法です。
どちらの方法を使用するかは、ソートした結果を元のリストに反映させるか、新しいリストを得るかによって選択することができます。