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

作者 : 郭然 本文共582个字,预计阅读时间需要2分钟 发布时间: 2021-08-25 共161人阅读

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

一、列表排序

  • 列表方法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

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

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

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

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

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

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

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

    image.png

    image.png
赞赏

微信赞赏支付宝赞赏

VIP部落提供编程技术、教育培训、优惠购物以及各类软件和网站源码、模板等资源下载。
VIP部落 » 【高级特性】45、自定义对象的排序【高级特性】45、自定义对象的排序

常见问题FAQ

提供最优质的资源集合

立即查看 了解详情