import functools
class Student(object):def __init__(self,name,age,classnum):self.name = nameself.age = ageself.classnum = classnum# 年龄按照从小到大排序def sort_age(a,b):return a.age - b.age# 先按照班级排好,再按照年龄从大到小排好def class_and_age(a,b):if a.classnum!=b.classnum:return a.classnum-b.classnumreturn b.age - a.agea=Student('111',19,3)
b=Student('222',20,2)
c=Student('333',31,1)res=[a,b,c]
for i in res:print('before',i)
print('-----------------------------'*2)
res=sorted(res,key=functools.cmp_to_key(Student.sort_age))
for i in res:print('after',i)
print('-----------------------------'*2)
res=sorted(res,key=functools.cmp_to_key(Student.class_and_age))
for i in res:print('after2',i)


返回负数时,a应该排在b的前面
返回正数时,认为b应该排在a的前面
返回0 时, 谁排在前面都可以

————————————————————————————
上面是自建类,有时候可以用sorted中的cmp来搭配lambda使用。
cmp(x,y)表示如果x-y<0,那么就是升序排列,如果y-x>0,那就表示降序排列,也对应于负数,a应该排在b的前面的规律。

res=[('b',2),('a',1),('c',3),('d',4)]
>>> sorted(res, cmp=lambda x,y:cmp(x[1],y[1]))res=[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
>>> sorted(res, key=lambda x:x[1])               # 利用key
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

python版比较器(左成云第三讲重点)相关推荐

  1. 左成云算法进阶班(1)-KMP (python)

    问题:给定一下两个字符串str(n位)与ptr(m位),求ptr在srt中出现的次数或者其出现的位置 str = "ababacababadababadadda"; ptr = & ...

  2. 爆肝5万字❤️Open3D 点云数据处理基础(Python版)

    Open3D 点云数据处理基础(Python版) 文章目录 1 概述 2 安装 2.1 PyCharm 与 Python 安装 2.3 Anaconda 安装 2.4 Open3D 0.13.0 安装 ...

  3. python栈应用_栈应用之 后缀表达式计算 (python 版)

    栈应用之 后缀表达式计算 (python 版) 后缀表达式特别适合计算机处理 1.  中缀表达式.前缀表达式.后缀表达式区别 中缀表达式:(3 - 5) * (6 + 17 * 4) / 3 17 * ...

  4. Python版打字练习软件源代码,键盘练习软件源代码,含娱乐模式和训练模式

    Python版打字练习软件源代码,键盘练习软件源代码,含娱乐模式和训练模式 按ESC切换左手练习,右手练习.双手练习 完整代码下载地址:Python版打字练习软件源代码 核心代码: import ra ...

  5. 解析身份证号码(Python版)

    解析身份证号码(Python版) 简单分析 结构 六位数字地址码 八位数字出生日期码 三位数字顺序码 一位数字校验码 代码实现 获取身份证号里的信息 获取身份证中的省份 计算身份证校验位 验证并提取信 ...

  6. 算法设计与分析(python版)-作业三

    参考教材:算法设计与分析(Python版)         作者:王秋芬 1 . 普通 (5分)以下问题中,哪些问题的分治算法消耗的时间与输入序列无关.() A. 二分查找 B. 合并排序 C. 快速 ...

  7. 一周刷爆LeetCode,算法da神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记

    一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记 教程与代码地址 P1 出圈了!讲课之外我们来聊聊 ...

  8. LeetCode 刷题之路(python版)

    摘自:https://blog.csdn.net/qq_32384313/article/details/90745354 LeetCode 刷题之路(python版) 小坏wz 2019-06-02 ...

  9. Python+vtk 实现激光点云数据可视化学习(2021.7.12)

    Python+VTK实现激光点云数据可视化学习 2021.7.12 1.激光点云与VTK简介 2.配置Python环境(Conda+PyCharm+Python3.6+VTK) 3.点云数据(大约60 ...

最新文章

  1. ansible roles和django项目的整合
  2. shell 多行注释
  3. Spring Boot:(五)静态资源和拦截器处理
  4. Javascript获取日期和星期
  5. iOS开发--添加定位功能
  6. 基于R语言GD包的Risk Map制作(批量生成)
  7. 二分类模型评估之 ROC曲线和PR曲线
  8. Android混淆使用详解
  9. matlab中mov是什么意思,PLC编程中MOV是什么意思
  10. 电子计算机用户网络新词秀,网络新词的研究
  11. iOS模拟器 定位失败或无法定位
  12. 支付宝周期扣款(支付后签约)业务功能总结(php+golang)
  13. 机器学习基础:模型评估(下)
  14. H265播放器EasyPlayer.js首次加载出现Uncaught (in promise) DOMException错误信息
  15. Android CMWAP和CMNET 切换APN
  16. UMAX软件服务平台——SoftTown软建堂
  17. java学习-ztree设置某个字段为父id字段
  18. 卖家考核分级 竞品分析
  19. 计算机工程被退稿,一稿多投被拒稿,确实是你的错
  20. 用户使用什么命令访问远程计算机,使用telnet命令访问远程计算机

热门文章

  1. 计算机专业班级口号霸气顺口,计算机班级口号霸气 班级文化的口号高三毕业班...
  2. 笔记-新版医用电气设备电磁兼容标准 YY9706.102 解读(2021-03-04 网络培训)
  3. 联想小新 Air 14 2023 超极本 评测
  4. 京东城市时空数据引擎JUST亮相中国数据库技术大会(附PPT链接)
  5. 6.openwrt改变打印串口波特率,添加ssh client,修改wwan口配置为自动获取ip
  6. 19年广东一战插本上岸啦!!!(来自一个自学上岸插本生的攻略)
  7. 动态统计每个日期过去30天的数据
  8. 情感——网络教育中不可缺少的组成部分
  9. CSDN社区专家库Beta版发布 打造“社区+人才”全新网络招聘模式
  10. 聚焦CSDN技术主题月:视频直播架构新解读专场回顾