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 相关文章推荐
Flask SQLAlchemy一对一,一对多的使用方法实践
Feb 10 Python
Python的内存泄漏及gc模块的使用分析
Jul 16 Python
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
Jun 19 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
Django后台管理系统的图文使用教学
Jan 20 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 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上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
学习YUI.Ext 第七天--关于View&amp;JSONView
2007/03/10 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
layui button 按钮弹出提示窗口,确定才进行的方法
2019/09/06 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
python中的函数用法入门教程
2014/09/02 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
python2.7实现爬虫网页数据
2018/05/25 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
乡镇干部先进事迹材料
2014/02/03 职场文书
知识竞赛主持词
2014/03/26 职场文书
公司委托书格式
2014/08/01 职场文书
国际贸易实训报告
2014/11/05 职场文书
2014年幼儿园工作总结
2014/11/10 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
酒会开场白大全
2015/06/01 职场文书
Python操作CSV格式文件的方法大全
2021/07/15 Python
python ConfigParser库的使用及遇到的坑
2022/02/12 Python
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android