Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不应该在python中使用list.sort_Python_Sorting - Fatal编程技术网

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

为什么不应该在python中使用list.sort,python,sorting,Python,Sorting,当我在14:20-14:30的时候,那个家伙说“不要使用list.sort”。他还提到“恐龙使用它!”(也就是说,这是一种古老的排序方式)。但他没有提到原因 有谁能告诉我为什么我们不应该使用list.sort?,因为list.sort()将执行就地排序。因此,这将更改原始列表。但是sorted(list)将创建一个新列表,而不是修改原始列表 例如: >>> s = [1,2,37,4] >>> s.sort() >>> s [1, 2, 4,

当我在14:20-14:30的时候,那个家伙说“不要使用
list.sort
”。他还提到“恐龙使用它!”(也就是说,这是一种古老的排序方式)。但他没有提到原因

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

,因为
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]

我认为它非常基于意见,有时需要更改原始列表,然后使用.sort(),有时不需要更改,然后使用sorted()

一般来说,从以下位置使用.sort()并不坏:

您还可以使用列表的
list.sort()
方法。它修改了 就地列出(并返回
None
,以避免混淆)。通常比较少 比排序更方便。-但是如果您不需要原始列表, 效率稍微高一点


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

谢谢您的回复。使用它还有其他缺点吗?@Laxmikant我不认为进行就地排序是一个缺点,它更有效(根据python文档),而且如果您有一个非常大的列表,这可能是唯一的方法。一个“真正”的缺点是它只为
list
定义,而
sorted
对任何
iterable
都有效,所以如果有一天你决定需要使用列表以外的东西,你会被卡住:)@Holt-谢谢你的回答,那些喜欢不可变数据结构的人肯定会使用
元组,不是一个
列表
?同意,但您正在使用其他人的代码,并且希望产生最小的影响,它仍然适用。