リストのソート
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] |
辞書のソート
今後