python3中sorted函数里cmp参数改变详解
作者:Z_Agent 时间:2022-11-11 17:21:49
今天在刷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方法本身也是针对对象的特定元素来进行比较的,直接使用特定元素的值更快捷、效率更高。
来源:https://www.cnblogs.com/ZAmateur/p/12467002.html
标签:python3,sorted,cmp
0
投稿
猜你喜欢
python基于pygame实现飞机大作战小游戏
2021-04-27 07:59:17
web前端vue之CSS过渡效果示例
2024-04-10 10:33:20
合成大西瓜开发源码手把手教你运行和部署大西瓜游戏项目(附源码)
2023-11-01 05:39:13
Python DPED机器学习之实现照片美化
2023-11-25 01:50:24
VS2015安装之后加装Sql server2014详细步骤
2024-01-18 04:39:56
ImageMagick FAQ 问题摘要
2008-10-21 13:14:00
Django实现简单登录的示例代码
2022-03-26 04:10:18
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2021-05-27 11:35:01
JavaScript中CreateTextFile函数
2024-04-18 10:49:03
Python+OpenCV实现分水岭分割算法的示例代码
2021-01-11 05:01:38
Pycharm 2019 破解激活方法图文详解
2023-10-31 10:49:04
VScode中集成Git命令详解
2022-09-21 00:57:55
python中数据爬虫requests库使用方法详解
2022-04-01 05:47:11
Python 实现使用dict 创建二维数据、DataFrame
2021-09-29 16:49:43
Git如何合并多次提交
2023-03-27 13:05:03
jQuery 1.3.3 新功能[译]
2009-06-04 12:23:00
如何解决django-celery启动后迅速关闭
2022-02-07 10:50:25
关注各网站的布局调整
2008-09-23 18:14:00
Javascript中判断变量是数组还是对象(array还是object)
2024-04-17 09:51:28
pytorch Variable与Tensor合并后 requires_grad()默认与修改方式
2021-08-05 09:11:59