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
  • asp之家 网络编程 m.aspxhome.com