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 相关文章推荐
easy_install python包安装管理工具介绍
Feb 10 Python
Python模块包中__init__.py文件功能分析
Jun 14 Python
Python实现的矩阵类实例
Aug 22 Python
pandas全表查询定位某个值所在行列的方法
Apr 12 Python
Django migrations 默认目录修改的方法教程
Sep 28 Python
Python3 单行多行万能正则匹配方法
Jan 07 Python
使用python绘制温度变化雷达图
Oct 18 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
Python如何读写字节数据
Aug 05 Python
利用Python将多张图片合成视频的实现
Nov 23 Python
Django一小时写出账号密码管理系统
Apr 29 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP中Notice错误常见解决方法
2017/04/28 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
javascript options属性集合操作代码
2009/12/28 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
JS &amp; JQuery 动态添加 select option
2016/06/08 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
2017/10/17 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
自考生毕业自我鉴定
2013/10/10 职场文书
行政助理的岗位职责
2014/02/18 职场文书
买房委托公证书
2014/04/08 职场文书
小学安全教育月活动总结
2014/07/07 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
2019经典广告词集锦!
2019/07/02 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers