python3中sorted函数里cmp参数改变详解
今天在刷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 sorted()函数cmp,key,reverse参数详解
- Python函数中的可变长参数详解
- Python学习笔记--函数参数的详解
- python函数动态参数详解
- Python sort sorted函数详解
- python函数参数详解
- Python自定义函数的创建、调用和函数的参数详解
- python重复元素判定,编写一个函数,接受列表作为参数,如果一个元素在列表中出现不止一次,则返回True,但不要改变原来列表的值。同时编写调用这个函数和测试结果的程序
- Python函数的默认参数设计示例详解
- python codecs模块 及几个常用函数参数详解
- python函数的万能参数传参详解
- Python自定义函数的创建、调用和函数的参数详解
- 对python3 sort sorted 函数的应用详解
- Python函数的参数常见分类与用法实例详解
- python函数注意事项-参数的改变
- Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
- Python3中函数参数传递方式实例详解
- Python self参数 & 函数详解
- python中的函数参数定义和可变参数详解
- Python学习之基础语言篇——函数参数详解