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实现360皮肤按钮控件示例
Feb 21 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
python统计中文字符数量的两种方法
Jan 31 Python
选择python进行数据分析的理由和优势
Jun 25 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
解决Django layui {{}}冲突的问题
Aug 29 Python
详解基于python-django框架的支付宝支付案例
Sep 23 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
keras中的卷积层&amp;池化层的用法
May 22 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
浅谈django channels 路由误导
May 28 Python
python程序需要编译吗
Jun 19 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 快速生成 Flash 动画的方法
2007/03/06 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
2015/03/04 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
javascript数据类型详解
2017/02/07 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Python编码爬坑指南(必看)
2016/06/10 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
Pytorch的mean和std调查实例
2020/01/02 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
老人再婚离婚协议书范本
2014/10/27 职场文书
优秀团员个人总结
2015/02/26 职场文书
2015年社区统计工作总结
2015/04/21 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
《我的伯父鲁迅先生》教学反思
2016/02/16 职场文书
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS