Python的内建比较函数cmp比较原理剖析

python的cmp比较函数比较原理

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函数比较原理了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2282562.html

(0)
上一篇 2025年2月27日 19:32:15
下一篇 2025年2月23日 08:19:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何用Python做爬虫

    入门”是良好的动机,但是可能作用缓慢。如果你手里或者脑子里有一个项目,那么实践起来你会被目标驱动,而不会像学习模块一样慢慢学习。 另外如果说知识体系里的每一个知识点是图里的点,依赖关系是边的话,那么这个图一定不是一个有向无环图。因为学习a的…

    编程技术 2025年2月27日
    200
  • Python和JavaScript间代码转换4个工具

    python 还是 javascript?虽然不少朋友还在争论二者目前谁更强势、谁又拥有着更为光明的发展前景,但毫无疑问,二者的竞争在 web 前端领域已经拥有明确的答案。立足于浏览器平台,如果放弃 javascript,我们也就没什么可选…

    编程技术 2025年2月27日
    200
  • 详解Python垃圾回收机制

    引用计数 python默认的垃圾收集机制是“引用计数”,每个对象维护了一个ob_ref字段。它的优点是机制简单,当新的引用指向该对象时,引用计数加1,当一个对象的引用被销毁时减1,一旦对象的引用计数为0,该对象立即被回收,所占用的内存将被释…

    编程技术 2025年2月27日
    200
  • Python 列表排序方法

    python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加入条件参数进行排序。reverse()方法 将列表中元素反转排序,比如下面这样&…

    编程技术 2025年2月27日
    200
  • Python重新加载模块方法

    为防止两个模块互相导入的问题,python默认所有的模块都只导入一次,如果需要重新导入模块, Python2.7可以直接用reload(),Python3可以用下面几种方法:   方法一:基本方法 from imp import reloa…

    编程技术 2025年2月27日
    200
  • 十个Python程序员易犯的错误

    不管是在学习还是工作过程中,人都会犯错。虽然python的语法简单、灵活,但也一样存在一些不小的坑,一不小心,初学者和资深python程序员都有可能会栽跟头。本文为大家分享了10大常见错误,需要的朋友可以参考下常见错误1:错误地将表达式作为…

    编程技术 2025年2月27日
    200
  • Python的静态方法和类成员方法

    python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的: 1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数;(参数cls代表本类) 2)从第1条,静态方法是无法访问实例变量的,而类成…

    编程技术 2025年2月27日
    200
  • Python2.x与3??.x版本区别

    python的3.0版本,常被称为python 3000,或简称py3k。相对于python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都…

    编程技术 2025年2月27日
    200
  • Python多线程

    多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理。 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 程序的运行速度可能…

    编程技术 2025年2月27日
    200
  • Python正则表达式

    正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。python 自1.5版本起增加了re 模块,它提供 perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。 compi…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论