cmp( x, y):比较2个对象,前者小于后者返回-1,相等则返回0,大于后者返回1.

Python的cmp比较函数比较原理

Python的cmp函数可以比较同类型之间,或者不同数据类型之间。然后根据Python的cmp比较函数的返回值来判定比较大小。

>>> list1, list2

=

[

123

,

'xyz'

], [

456

,

'abc'

]

>>>

cmp

(list1, list2)

-

1

>>>

cmp

(list2, list1)

1

>>> list3

=

list2

+

[

789

]

>>> list3

[

456

,

'abc'

,

789

]

>>>

cmp

(list2, list3)

-

1

观察上面cmp函数的几个比较,可以总结:

Python的cmp比较函数 ,如果我们比较的是两个同类的对象,比较操作是非常直观的。

数字和字符串的比较,直接比较它们的值。

对于序列类型的比较,方式上有相似。Python在两个对象基本不能比较的时候尽量做出公平的结果。比如当两个对象没有关系时,或者两种类型根本就没有用于比较的函数时,这时 Python只能根据"逻辑"来做出结论。比较的算法逻辑:

1.   对两个列表的元素进行比较.

2.   如果比较的元素是同类型的,则比较其值,返回结果.

3.   如果两个元素不是同一种类型,则检查它们是否是数字.

a. 如果是数字,执行必要的数字强制类型转换,然后比较.

b. 如果有一方的元素是数字,则另一方的元素"大"(数字是"最小的")

c. 否则,通过类型名字的字母顺序进行比较.

4.   如果有一个列表首先到达末尾,则另一个长一点的列表"大".

5.   如果我们用尽了两个列表的元素而且所有元素都是相等的,那么结果就是个平局,就

是说返回一个 0.

这就是Python的cmp函数比较原理了

python cmp方法_python cmp函数详解相关推荐

  1. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

  2. python中plt定义,对Python中plt的画图函数详解

    1.plt.legend plt.legend(loc=0)#显示图例的位置,自适应方式 说明: 'best' : 0, (only implemented for axes legends)(自适应 ...

  3. python getattr_Python中的getattr()函数详解:

    标签:Python中的getattr()函数详解: getattr(object, name[, default]) -> value Get a named attribute from an ...

  4. python open写入_Python3 open() 函数详解 读取文件写入文件追加文件二进制文件

    Python3 open() 函数详解 读取文件写入文件追加文件二进制文件 open()函数的主要作用是打开文件并返回相应文件对象,使用文件对象可以对当前文件进行读取.写入.追加等操作,默认情况下&q ...

  5. python bytearray转为byte_Python3 bytearray() 函数详解 将参数转为可变的字节数组

    Python3 bytearray() 函数详解 将参数转为可变的字节数组 bytearray()函数的主要用途是将参数转换为一个新的字节数组,它是一个可变的整数序列,它的取值范围是0 <= x ...

  6. python中文件读写--open函数详解

    python中open函数详解 在python中文件的读取分为三步走: 读:打开文件 -> 读文件 -> 关闭文件 (有点像把大象放进冰箱需要几步?的问题) 1.open函数 open函数 ...

  7. python bytes 改值_Python3 bytes() 函数详解 将参数转为不可变的字节数组

    Python3 bytes() 函数详解 将参数转为不可变的字节数组 bytes()函数的主要用途是将参数转换为一个新的字节数组,它是一个不可变的整数序列,它的取值范围是0 <= x < ...

  8. Python操作文件之open函数详解

    Python的open函数详解 open(file, mode='rt', encoding=None) -> BaseIO mode参数详解: 字符 含意 'r' 读取(默认) 'w' 写入, ...

  9. python之append、expend函数详解

    extend.append函数详解 一.列表 1>append()函数 2>extend()函数 二.字符串和元组中都没有append()和extend()函数 一.列表 1>app ...

  10. python字典操作的方法_python 字典操作方法详解

    python 字典操作方法详解 一.总结 一句话总结: 字典就是键值对映射 ,像js和php中的键值对数组:{'name':'jamnes','age':'32'} 1.python字典的增删改查? ...

最新文章

  1. P1972 [SDOI2009]HH的项链(离线树状数组)
  2. java opencv 调用摄像头_opencv C++实现调用摄像头动态识别人脸
  3. axis WebServices 完美调用天气预报,查询、显示 代码!
  4. 世博展示生态化住宅 物联网助推智能化家居
  5. 计算机专业指南考试,电大计算机专业专科期末考试试卷《计算机专业指南》试卷...
  6. Aspectj 实现Method条件运行
  7. 一个能极大提高生产率的Chrome新建标签页扩展
  8. [COM/ATL]组件、对象、MFC、ATL的区别
  9. Cannot find or open the PDB file
  10. 测试用例怎么写_如何高效组织自动化测试用例
  11. Pb(96) The serializable class Model does not declare a static final serialVersionUID field of typ...
  12. php cannot bind port to socket,PHP基于socket实现客户端和服务端通讯功能
  13. @Responsebody与@RequestBody
  14. Jmeter压力测试实例
  15. 暴雪游戏登录html代码,官方平台账号绑定暴雪游戏通行证!
  16. CDH初始化scm_prepare_database.sh数据库遇到的问题
  17. python report_python之reportlab
  18. JS中的this指向
  19. 除了“造车再创业”,小米还能拼什么?
  20. 英语音标 什么是音素

热门文章

  1. android经典DEMO
  2. VO与Model、pojo的区别
  3. OCFS,OCFS2,ASM,RAW 讨论主题合并帖(转)
  4. 用PyTorch对Leela Zero进行神经网络训练
  5. yoga tab3 linux,全面进化联想YOGATab3Pro平板评测
  6. 简直了!10年难得一见的Tuxedo服务异常
  7. 色温计算公式.docx
  8. Java的静态泛型方法
  9. Word页脚页码设置
  10. python期中考试试卷分析_期中考试试卷分析