假设我有一些对象的列表lst
。
如果未提供关键功能,对象的值是用sorted(lst)
执行的?是散列还是一些id?
答案 0 :(得分:7)
如果未提供密钥,则sort
仅使用<
运算符,如下例所示:
class A:
def __init__(self,a):
self.a = a
def __lt__(self,other):
return self.a < other.a
def __repr__(self):
return str(self.a)
lst = [A(12),A(10),A(44)]
print(sorted(lst))
我得到:
[10, 12, 44]
sort
在内部使用了已定义的__lt__
(小于)运算符,但不等于不优越。只能使用<
运算符执行排序。
(评论__lt__
运算符会导致TypeError: unorderable types: A() < A()
)
答案 1 :(得分:3)
Python padding: 60px
此方法仅使用&lt;对该列表进行排序。两者之间的比较 项目。如果有任何比较操作,则不会禁止例外 失败,整个排序操作将失败(列表可能会失败 处于部分修改状态)。
参考:list.sort()