原标题:python中sort()方法的cmp参数

“如果希望元素能按照特定的方式进行排序(而不是sort函数默认的方式,即根据python的默认排序规则按升序排列元素),那么可以通过compare(x,y)的形式自定义比较函数。

compare(x,y)函数会在xy时返回正数,如果x=y则返回0(根据你的定义)。

定义好该函数之后,就可以提供给sort方法作为参数了。内建函数cmp提供了比较函数的默认实现方式:

对于sort()方法,如果不传入参数,默认cmp为None,即numbers.sort()=number,sort(cmp)=number.sort(cmp=None),我们可以做一个验证:

如果传入参数,numbers.sort(cmp=1),我们可以验证一下,整型的参数可不可以:

代码报错:int对象不是一个callable,可调用对象。callable(object) 方法用来检测对象是否可被调用,即是否是一个函数,如果是则调用该函数的值,赋值给cmp。

那么我们如何自定义一个比较函数呢?

其中的规律就是:两两比较,如果返回为正,则交换两者的位置,即y在前x在后,否则x在前y在后。也可以这样解释,升序就是拿第一个数比对后面的数,降序就是拿最后一个数比对前面的数。

当然,也可以写作numbers.sort(mycmp1),省略cmp。

我们还可以直接穿入匿名函数lambda:

另外,python3.x中取消了cmp参数,也不支持直接往sort()里面传函数,但可以构造排序函数传递给key来实现。返回搜狐,查看更多

责任编辑:

python中怎么调用sort_python中sort()方法的cmp参数相关推荐

  1. python idle运行anaconda_在Python IDLE 下调用anaconda中的库教程

    大家都知道,Anaconda是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.下载了anaconda我们可以很方便的随时调用这里面的库. 原先我自己在Py ...

  2. pythonidle安装第三方库_在Python IDLE 下调用anaconda中的库教程

    在Python IDLE 下调用anaconda中的库教程 大家都知道,Anaconda是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.下载了anaco ...

  3. 【lombok】使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法...

    错误如题:使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法 报错如下: 解决方法: 1.首先查看你的lombok插件是否下载安 ...

  4. 线程的常用方法——currentThread方法||在main方法中直接调用run()方法,没有开启新的线程,以在run方法中的当前线程就是main线程||启动子线程,子线程会调用run方法

    线程的常用方法--currentThread方法 Thread.currentThread()方法可以获得当前线程 Java 中的任何一段代码都是执行在某个线程当中的. 执行当前代码的线程就是当前线程 ...

  5. mysql idataparameter_asp.net中IDataParameter调用存储过程的实现方法

    本文实例讲述了asp.net中IDataParameter调用存储过程的实现方法,是asp.net数据库程序设计中非常实用的技巧.分享给大家供大家参考. 具体实现方法如下: public string ...

  6. python调用oracle存,Python使用cx_Oracle调用Oracle存储过程的方法示例

    本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法.分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL. 首先,在数据库端 ...

  7. python中子类调用父类的初始化方法

    http://bestchenwu.iteye.com/blog/1044848 http://www.crazyant.net/1303.html 一直不太理解python的初始化方法,今天找了下资 ...

  8. JavsScript中比较大小总结---基于sort()方法

    JS中的sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排列. 例如: let values = [0 ,1 , 5 , 10 ,15]; values ...

  9. 关于C++中vector和set使用sort方法进行排序

    C++中vector和set都是非常方便的容器, sort方法是algorithm头文件里的一个标准函数,能进行高效的排序,默认是按元素从小到大排序 将sort方法用到vector和set中能实现多种 ...

  10. Python中json模块的load/loads方法实战及参数详解

    文章目录 前言 正文 1. loads方法与load方法的异同 1.1不相同点: 1.2 相同点 1.3 例子 2. 转换成Python对象 3. json.load(s)的参数 3.1 s参数 3. ...

最新文章

  1. 《算法技术手册》一2.4.6 二次方的算法性能
  2. 人脸识别再遭弃用,美国之后这回轮到欧盟
  3. idea 开发spark 程序代码
  4. linux服务器登录时慢出现卡顿
  5. mysql 卸载插件_MySQL 插件安装或卸载(window validate_password 为例)
  6. Delphi TXLSReadWriteII导出Excel
  7. map分组后取前10个_java中list里面存放map,根据map中的某两个个字段进行排序
  8. android 进程
  9. 微信小程序开发学习笔记008--微信小程序项目02
  10. Windows的同步I/O和异步I/O
  11. fluidsim元件库下载_FluidSIM
  12. Arduino入门教程(二) Unity动感单车
  13. 办公室计算机设备搬迁计划方案,计算机机房整体搬迁方案稿 执行计划.doc
  14. mysql 求几何平均值_回忆高中数学--各种平均数公式
  15. ipv4网络无访问权限
  16. 2021年登高架设免费试题及登高架设找解析
  17. 利率上浮100bp是什么意思,利率浮动值60BP什么意思
  18. 计算机二级考试干货内容,计算机二级考试经验总结,干货满满!
  19. 优课联盟 实境英语Test for Unit 2
  20. SaltStack常用的模块

热门文章

  1. CF1040D Subway Pursuit
  2. [2018.07.10 T1]叠盒子
  3. redis类型 tp5_tp5配置使用redis笔记!
  4. 利用matlab编程实现主成分分析,利用Matlab编程进行主成分分析
  5. 万年历c语言 输出单月,求帮忙差错,打印万年历,输入某年某月,打印该月日历...
  6. matlab如何动态输出很长的图片,Qt实现长图片的放大缩小以及动态显示
  7. wcf 双向 java_我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...
  8. python中元组的赋值_在Python中,元组可以被赋值修改。( ) (2.0分)_学小易找答案...
  9. java经常用到的英文_Java中用到的英文单词,你知道多少?
  10. leetcode·双指针