为什么是[].sort() != []
而是[].sort() = None
?
从逻辑上讲,似乎第一种情况应该是真的。
答案 0 :(得分:15)
这是因为sort
总是返回None
,这是一个就地排序。请改用sorted
。
>>> sorted([]) == []
True
答案 1 :(得分:3)
这是因为列表是可变的。 [].sort()
不会返回新列表,只会更改现有列表,因此返回值为空,或None
。这就是你去排序时的原因,你不必像list = list.sort()
这样做,你只需做list.sort()
答案 2 :(得分:2)
Python文档至少在两个不同的地方涵盖了这一点:
sort()
和reverse()
方法会根据经济情况修改列表 排序或反转大型列表时的空间。提醒你 它们通过副作用进行操作,它们不会返回已排序或反转的 列表。
- note 7 under Mutable Sequence Types
您还可以使用列表的
list.sort()
方法。它修改了 就地列出(并返回None以避免混淆)。通常它更少 方便于sorted()
- 但如果您不需要原始列表, 它效率稍高。