为什么不在python中使用list.sort

Lax*_*ant 6 python sorting

当我在14:20 - 14:30 通过Google Python Class Day 1 Part 2时,Guy说"不要使用list.sort".他还提到"恐龙使用它!" (即它是一种旧的排序方式).但他没有提到原因.

谁能告诉我为什么我们不应该使用list.sort

Avi*_*Raj 8

因为list.sort()会进行就地排序.所以这改变了原始列表.但是sorted(list)会创建一个新列表而不是修改原始列表.

例:

>>> s = [1,2,37,4]
>>> s.sort()
>>> s
[1, 2, 4, 37]
>>> s = [1,2,37,4,45]
>>> sorted(s)
[1, 2, 4, 37, 45]
>>> s
[1, 2, 37, 4, 45]
Run Code Online (Sandbox Code Playgroud)

  • @Laxmikant我不认为进行就地排序是一个缺点,它更有效(根据python doc),如果你有一个非常大的列表,可能是唯一的方法.一个"真正的"缺点是它只是为`list`定义,而`sorted`适用于任何`iterable`,所以如果有一天你决定你需要使用别的东西而不是list,你就会被卡住:) (2认同)

svf*_*fat 6

我认为它是基于意见的,有时你需要更改原始列表并使用.sort(),有时你不需要更改它,并且你使用sorted()

一般来说,使用.sort()也不错


Ale*_*lor 5

https://wiki.python.org/moin/HowTo/Sorting

您也可以使用list.sort()列表的方法。它就地修改列表(并返回None以避免混淆)。通常它不如sorted()- 但如果您不需要原始列表,它的效率会更高一些。

许多人不喜欢改变变量的状态(查找不可变值/数据结构的优点),因此不喜欢像list.sort这样修改原始列表。

  • 喜欢不可变数据结构的人肯定会使用“元组”,而不是“列表”吗? (3认同)