【高级特性】45、自定义对象的排序

目录
一、列表排序
二、内置排序函数
三、特殊方法
四、可扩展的“大小”比较及排序

一、列表排序

  • 列表方法sort()
    对原列表进行排序,改变原列表内容
    如果列表中的元素都是数字,默认按升序排序
    通过添加参数reverse=True可改为降序排列
    image.png

如果元素都是字符串,则会按照字母表顺序排列:
image.png

二、内置排序函数

  • 通用函数sorted()
    类似sort(),但返回的是排好序的列表副本,原列表内容不变
    image.png

只有当列表中的所有元素都是同一种类型时,sort()sorted()才会正常工作

三、特殊方法

  • 特殊方法_lt_
    由于Python的可扩展性,每种数据类型可以定义特殊方法
    def_lt_(self,y)
    返回True视为比y“小”,排在前
    返回False视为比y“大”,排在后
    只要类定义中定义了特殊方法_lt_,任何自定义类都可以使用x<y这样的比较

四、可扩展的“大小”比较及排序

  • 例子:Student
    姓名name,成绩grade
  • 按照成绩由高到低排序


    image.png
  • 构造一个列表,加入Student对象


    image.png
  • 直接调用列表sort方法
    可以根据_lt_定义排序

  • 直接检验Student对象的大小
    S[i]<s[j]

  • 另外可以定义其它比较符
    _gt_

    image.png

  • 重新定义_lt_方法,改为比较姓名
    这样sort方法就能按照姓名来排序

    image.png

    image.png

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容