参考:ソート HOW TO
https://docs.python.jp/3/howto/sorting.html
sort(),sorted()の違い
リストの名前をLとします。
L.sort() → ソートしたリストそのものが変更される。ソートできるのはリストだけ。
sorted(L) → ソートしたリストは変更されない。リストだけでなく他のイテラブルなオブジェクトをソートできる。
sort()の使い方
sort()はPythonの組み込みメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
>>> x = [30, 50, 40, 10] >>> x.sort() >>> x # xそのものが変更されている [10, 30, 40, 50] # sort()ではリスト以外はソートできない >>> d = {2: 'b', 1: 'a', 3: 'c'} >>> d.sort() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'dict' object has no attribute 'sort' >>> s = 'Python List' >>> s.sort() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'str' object has no attribute 'sort' |
リストをソートして、ソートする前のリストが必要ない場合にのみ、sort()が効率的と言えます。
ちなみに、sorted()との混乱を避けるためにsort()をするとNoneが返ります。
1 2 3 4 5 6 7 8 9 10 |
>>> x = [30, 50, 40, 10] >>> print(x.sort()) None >>> y = x.sort() >>> print(y) None >>> x [10, 30, 40, 50] |
sorted()の使い方
sorted()はPythonの組み込み関数です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
>>> x = [30, 50, 40, 10] >>> sorted(x) [10, 30, 40, 50] >>> x # sorted()ではソートされたリストそのものは変わらない [30, 50, 40, 10] # sorted()はリスト以外でも汎用的に使える >>> d = {2: 'b', 1: 'a', 3: 'c'} >>> sorted(d) [1, 2, 3] >>> s = 'Python List' >>> sorted(s) [' ', 'L', 'P', 'h', 'i', 'n', 'o', 's', 't', 't', 'y'] |
sorted(L)を実行するとリストLをソートしたものと同じリストを返しますが、L自体は変更されません。
sorted()はリスト以外のイテラブルなオブジェクトにも使えるので、sort()に比べて使うことが多くなります。