リストのソート
sort()
メソッドは破壊的処理
sort()
はリストのメソッドで、元のリストの内容を変更する(破壊的処理)。メソッドの実行結果はNone
。
降順にソートしたいときは、引数reverse
をTrue
で指定。
1 2 3 4 5 6 7 8 9 10 11 |
lst = [3, 2, 1, 5, 4] print(lst.sort()) print(lst) lst.sort(reverse=True) print(lst) # None # [1, 2, 3, 4, 5] # [5, 4, 3, 2, 1] |
sorted()
関数は非破壊的処理
sorted()
関数は引数のリストのソート結果を返す。元のリストの内容は変更されない(非破壊的処理)。
降順ソートの指定はsort()
メソッドと同じ。
1 2 3 4 5 6 7 8 9 10 11 12 |
lst = [3, 2, 1, 5, 4] print(sorted(lst)) print(lst) print(sorted(lst, reverse=True)) print() # [1, 2, 3, 4, 5] # [3, 2, 1, 5, 4] # [5, 4, 3, 2, 1] |
文字列は辞書順でソートされる
1 2 3 4 5 6 7 |
lst = ['ca', 'ba', 'aa', 'bb', 'ab'] print(sorted(lst)) print() # ['aa', 'ab', 'ba', 'bb', 'ca'] |
ndarray
の場合の注意
sorted()
はそのままではndarray
にならない
ndarrayをsorted()関数の引数にすると、エラーにはならないが結果はリストで返されるため、配列への変換が必要。
1 2 3 4 5 6 7 8 9 10 |
import numpy as np a = np.array([3, 2, 1, 5, 4]) print(sorted(a)) print(np.array(sorted(a))) print() # [1, 2, 3, 4, 5] # [1 2 3 4 5] |
numpy.sort()
は非破壊的にndarray
をソートできる
numpy.sort()
関数は、引数のndarray
のソート結果を返し、元のndarray
は変更しない。リストの場合のsorted()
関数と同じ動作。
1 2 3 4 5 6 7 |
a = np.array([3, 2, 1, 5, 4]) print(np.sort(a)) print(a) # [1 2 3 4 5] # [3 2 1 5 4] |
ndarray
のsort()
メソッドは破壊的
ndarray
のsort()
メソッドは、元の配列の内容を書き換える。リストのsort()
メソッドと同じ挙動で、実行結果の戻り値はNone
。
1 2 3 4 5 6 |
a = np.array([3, 2, 1, 5, 4]) print(a.sort()) print(a) # None # [1 2 3 4 5] |
辞書のソート
今後