python3中sorted函数里cmp参数改变详解


Posted in Python onMarch 12, 2020

今天在刷leetcode的时候,对于179题返回最大数,用python2中的sorted(cmp)会很方便,但是在python3中这一参数被取消了,经过查找,发现应该借助functools中的cmp_to_key函数,直接贴代码

import functools
def cmp(a,b):
  if a > b :
    return -1
  elif a < b :
    return 1
  else:
    return 0
    
nums = [1,2,3,4,5,6]
sorted_nums = sorted(nums, key = functools.cmp_to_key(cmp))

Out[30]: [6,5,4, 3, 2, 1]

但注意需要转换的cmp函数的返回值必须是0, 1, -1

知识点扩展:

为什么Python中sort方法和sorted函数调用废弃使用cmp参数

Python中sort方法和sorted函数老猿在前面一些章节介绍过,具体语法及含义在此不再展开说明,但老猿在前面学习相关内容时,只使用了简单的案例,对这两个方法的key参数没有深入研究,总以为就是以前c语言排序算法中的cmp函数。今天在研究富比较方法的运用时才发现key根本不是cmp函数,而是一个只针对比较元素自身的函数,不像cmp函数是两个对象之间比较。
经查阅资料和测试,发现其实早期的Python版本中是提供了cmp函数的,其版本演进沿革如下:
Python2.1以前的排序比较方法只提供一个__cmp__方法,没有__lt__等6个富比较方法, Python 2.1引入了富比较方法,Python3.4之后作废了__cmp__方法。相应地从Python2.4开始,list.sort() 和 sorted() 都增加了一个 ‘key' 参数用来在进行比较之前指定每个列表元素上要调用的函数。
为什么要这么处理呢?这是因为cmp方法本身也是针对对象的特定元素来进行比较的,直接使用特定元素的值更快捷、效率更高。

到此这篇关于python3中sorted函数里cmp参数改变详解的文章就介绍到这了,更多相关python3中sorted函数里关于cmp这一参数的改变内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python字符串匹配算法KMP实例
Jul 18 Python
Python工程师面试题 与Python Web相关
Jan 14 Python
python下如何查询CS反恐精英的服务器信息
Jan 17 Python
Python存取XML的常见方法实例分析
Mar 21 Python
python实现简易内存监控
Jun 21 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
浅谈Python访问MySQL的正确姿势
Jan 07 Python
基于keras 模型、结构、权重保存的实现
Jan 24 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
使用pytorch 筛选出一定范围的值
Jun 28 Python
Python实现子类调用父类的初始化实例
Mar 12 #Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
Mar 12 #Python
解决pycharm不能自动补全第三方库的函数和属性问题
Mar 12 #Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 #Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 #Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 #Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 #Python
You might like
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
jquery选择checked在ie8普通模式下的问题
2014/02/12 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
python实现在目录中查找指定文件的方法
2014/11/11 Python
Python字符串替换实例分析
2015/05/11 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
python deque模块简单使用代码实例
2020/03/12 Python
python mysql中in参数化说明
2020/06/05 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
美国购买新书和二手书网站:Better World Books
2018/10/31 全球购物
路政管理专业推荐信
2013/11/11 职场文书
医药工作岗位求职信分享
2013/12/31 职场文书
书法比赛获奖感言
2014/02/10 职场文书
保护环境建议书100字
2014/05/13 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
新党章心得体会
2014/09/04 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
python中urllib包的网络请求教程
2022/04/19 Python