3 回答

TA贡献1806条经验 获得超8个赞
是的,该手册的目的实际上是为了确保其sorted
稳定性,并确保使用与该sort
方法完全相同的算法。我的确意识到文档不是100%清楚这种身份。总是很高兴地接受doc补丁!

TA贡献1804条经验 获得超8个赞
他们是稳定的。
顺便说一句:您有时可以通过将多遍排序组合到单遍排序中而忽略了解排序和排序是否稳定。
例如,如果你想根据自己对对象进行排序last_name,first_name属性,你可以做一个合格:
sorted_list= sorted(
your_sequence_of_items,
key= lambda item: (item.last_name, item.first_name))
利用元组比较。
此答案按原样涵盖了原始问题。对于与排序有关的其他问题,有Python排序方法。

TA贡献1887条经验 获得超5个赞
同时更改文档(相关的commit),而的当前文档sorted明确保证:
内置sorted()功能保证稳定。如果可以保证不更改比较相等的元素的相对顺序,则排序是稳定的-这有助于多次通过排序(例如,按部门排序,然后按薪级等级排序)。
该文档的这一部分已添加到Python 2.7和Python 3.4(+)中,因此该语言版本的任何兼容实现都应具有稳定的sorted。
请注意,对于CPython,list.sort自Python 2.3起一直保持稳定
蒂姆·彼得斯(Tim Peters)重新编写了他的list.sort()实现-这是一种“稳定的排序”(相等的输入在输出中以相同的顺序出现)并且比以前更快。
我目前尚不确定100%的sorted使用率list.sort,但现在还可以查看历史记录。但是很可能“总是”使用了它list.sort。
添加回答
举报