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基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 Python
Python实现的随机森林算法与简单总结
Jan 30 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
Python实现k-means算法
Feb 23 Python
python机器人运动范围问题的解答
Apr 29 Python
Python 使用matplotlib模块模拟掷骰子
Aug 08 Python
Python绘制股票移动均线的实例
Aug 24 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
python实现的分层随机抽样案例
Feb 25 Python
Python数组拼接np.concatenate实现过程
Apr 18 Python
Python中zip函数如何使用
Jun 04 Python
pytest配置文件pytest.ini的详细使用
Apr 17 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
php实现的支持断点续传的文件下载类
2014/09/23 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
PHP加密解密实例分析
2015/12/25 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
vue组件name的作用小结
2018/05/23 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
python实现12306火车票查询器
2017/04/20 Python
浅谈django的render函数的参数问题
2018/10/16 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
Python+Redis实现布隆过滤器
2019/12/08 Python
Python箱型图处理离群点的例子
2019/12/09 Python
10个示例带你掌握python中的元组
2020/11/23 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
工作会议欢迎词
2014/01/16 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python