Python 就地排序对空列表返回None

Python 就地排序对空列表返回None,python,Python,为什么[].sort()!=[]而是[].sort()=None 从逻辑上讲,第一种情况似乎应该是正确的。这是因为sort总是返回None,这是一种就地排序。改为使用排序后的 >>> sorted([]) == [] True 这是因为列表是可变的[].sort()不返回新列表,它只是更改现有列表,因此返回值为nothing,或None。同样的原因是,当您进入排序时,您不必执行类似于list=list.sort(),只需执行list.sort()Python文档至少在两个不同

为什么
[].sort()!=[]
而是
[].sort()=None


从逻辑上讲,第一种情况似乎应该是正确的。

这是因为
sort
总是返回
None
,这是一种就地排序。改为使用排序后的

>>> sorted([]) == []
True

这是因为列表是可变的
[].sort()
不返回新列表,它只是更改现有列表,因此返回值为nothing,或
None
。同样的原因是,当您进入排序时,您不必执行类似于
list=list.sort()
,只需执行
list.sort()
Python文档至少在两个不同的地方介绍了这一点:

sort()
reverse()
方法修改列表,以实现经济性 对大列表进行排序或反转时的空间大小。提醒你 它们通过副作用进行操作,不返回已排序或已反转的 名单

-

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


-

答案就在你的问题中。这是一种就地排序。它不应该归还任何东西。这能回答你的问题吗?