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

Python的cmp比较函数比较原理

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

1
2
3
4
5
6
7
8
9
10
>>> 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函数比较原理了

http://www.qytang.com/
http://www.qytang.com/cn/list/29/
http://www.qytang.com/cn/list/28/428.htm
http://www.qytang.com/cn/list/28/426.htm
http://www.qytang.com/cn/list/28/425.htm
http://www.qytang.com/cn/list/28/424.htm
http://www.qytang.com/cn/list/28/423.htm
http://www.qytang.com/cn/list/28/422.htm
http://www.qytang.com/cn/list/28/421.htm
http://www.qytang.com/cn/list/28/420.htm
http://www.qytang.com/cn/list/28/417.htm
http://www.qytang.com/cn/list/28/416.htm
http://www.qytang.com/cn/list/28/407.htm
http://www.qytang.com/cn/list/28/403.htm

最新文章

  1. 计算机视觉:关于视觉算法源码中常出现的imageLib库的使用指南
  2. #1406 - Data too long for column (转)
  3. 匹配一级分类和二级分类 名字和url 里面有玄机
  4. Android 用Intent和Bundle传递参数
  5. HW4.42
  6. My.Ioc 代码示例——属性和方法注入
  7. python自动化测试应用-番外篇--接口测试2
  8. 【Linux】用yum安装JDK(转)
  9. redhat7 Samba
  10. dt dl列表布局
  11. Redis .Net 基本类型使用之南
  12. oracle - 查询某些表是空白,需要提升权限后,才可查询出数据
  13. CentOS系统Nginx安装配置,随时更新
  14. tedu训练营day03
  15. steps/train_lda_mllt.sh
  16. 白化(Whitening): PCA 与 ZCA (转)
  17. 几种php加速器比较
  18. Linux环境下安装Redis并完成测试(已验证)
  19. vim自动补全插件YouCompleteMe的安装及配置
  20. 系统管理员应该知道的 20 条 Linux 命令

热门文章

  1. “FPGA+云"助力高性能计算
  2. 嵌入式设备snmpd 移植和测试(78K为例)
  3. postman参数化的方法
  4. Python基础之元组tuple(带了枷锁的列表)
  5. 透过一个实例理解C++语言的explicit关键字
  6. Druid.io系列(五):查询过程
  7. [Cpp primer] Library string Type
  8. nginx代理socket tcp/udp
  9. Swift 延迟运行代码
  10. NIO编程介绍