リストのソート。sort()とsorted()の違い,Python3

参考:ソート HOW TO
https://docs.python.jp/3/howto/sorting.html

sort(),sorted()の違い

リストの名前をLとします。

L.sort() → ソートしたリストそのものが変更される。ソートできるのはリストだけ。

sorted(L) → ソートしたリストは変更されない。リストだけでなく他のイテラブルなオブジェクトをソートできる。

sort()の使い方

sort()はPythonの組み込みメソッドです。

>>> 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が返ります。

>>> x = [30, 50, 40, 10]
>>> print(x.sort())
None

>>> y = x.sort()
>>> print(y)
None

>>> x
[10, 30, 40, 50]

sorted()の使い方

sorted()はPythonの組み込み関数です。

>>> 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()に比べて使うことが多くなります。