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 translator使用实例
Sep 06 Python
在Python下进行UDP网络编程的教程
Apr 29 Python
Python中的hypot()方法使用简介
May 18 Python
python简单图片操作:打开\显示\保存图像方法介绍
Nov 23 Python
Python编程中NotImplementedError的使用方法
Apr 21 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
python flask框架实现传数据到js的方法分析
Jun 11 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
Aug 02 Python
Python使用scipy模块实现一维卷积运算示例
Sep 05 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
pytorch动态网络以及权重共享实例
Jan 06 Python
OpenCV python sklearn随机超参数搜索的实现
Jan 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
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
jquery 笔记 事件
2011/11/02 Javascript
Jquery实现自定义窗口随意的拖拽
2014/03/12 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
JS面向对象之单选框实现
2020/01/17 Javascript
python实现逻辑回归的方法示例
2017/05/02 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
python自动裁剪图像代码分享
2017/11/25 Python
python opencv之SURF算法示例
2018/02/24 Python
PyQt5实现拖放功能
2018/04/25 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
python3 pygame实现接小球游戏
2019/05/14 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
成教自我鉴定
2013/10/27 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
法律进社区活动总结
2015/05/07 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android