【高级特性】45、自定义对象的排序【高级特性】45、自定义对象的排序
目录
一、列表排序
二、内置排序函数
三、特殊方法
四、可扩展的“大小”比较及排序
一、列表排序
- 列表方法
sort()
对原列表进行排序,改变原列表内容
如果列表中的元素都是数字,默认按升序排序
通过添加参数reverse=True可改为降序排列
如果元素都是字符串,则会按照字母表顺序排列:
二、内置排序函数
- 通用函数
sorted()
类似sort(),但返回的是排好序的列表副本,原列表内容不变
只有当列表中的所有元素都是同一种类型时,sort()
和sorted()
才会正常工作
三、特殊方法
- 特殊方法
_lt_
由于Python的可扩展性,每种数据类型可以定义特殊方法
def_lt_(self,y)
返回True视为比y“小”,排在前
返回False视为比y“大”,排在后
只要类定义中定义了特殊方法_lt_
,任何自定义类都可以使用x
四、可扩展的“大小”比较及排序
- 例子:Student
姓名name,成绩grade -
按照成绩由高到低排序
-
构造一个列表,加入Student对象
-
直接调用列表sort方法
可以根据_lt_
定义排序 -
直接检验Student对象的大小
S[i]
-
另外可以定义其它比较符
_gt_
等 -
重新定义
_lt_
方法,改为比较姓名
这样sort方法就能按照姓名来排序
微信赞赏支付宝赞赏