python有8种比较运算符:<、<=、>、>=、==、!=、is、is not,它们具有相同的优先级。它们具体的含义如下:

运算符 含义
< 小于
<= 小于或等于
> 大于
>= 大于或等于
== 等于
!= 不等于
is 是否同一个对象
is not 是否不是同一个对象

比较运算符有如下一些特性:

相同类型间的2个不同对象都能进行比较

# 整形
>>> 2 > 1
True
>>> 2 >= 1
True
>>> 2 < 1
False
>>> 2 <= 1
False
>>> 2 == 1
False
>>> 2 != 1
True
>>> 2 is 1
False
>>> 2 is not 1
True# 字符串
>>> 'a' > 'b'
False
>>> 'a' >= 'b'
False
>>> 'a' < 'b'
True
>>> 'a' <= 'b'
True
>>> 'a' == 'b'
False
>>> 'a' != 'b'
True
>>> a is 'b'
False
>>> a is not 'b'
True# 序列类型
>>> (1,2) > (2,3)
False
>>> (1,2) >= (2,3)
False
>>> (1,2) < (2,3)
True
>>> (1,2) <= (2,3)
True
>>> (1,2) == (2,3)
False
>>> (1,2) != (2,3)
True
>>> (1,2) is (2,3)
False
>>> (1,2) is not (2,3)
True

大小比较运算符只能在类型相同的2个对象间比较,不同的类型进行比较会报语法错误

# 类型相同的对象间可以比较大小
>>> 1 >= 0
True
>>> 'a' < 'b'
True
>>> (1,2) > (1,1)
True# 类型不相同的对象间不可以比较大小
>>> 1 >= '1'
Traceback (most recent call last):File "<pyshell#15>", line 1, in <module>1 >= '1'
TypeError: unorderable types: int() > str()
>>> (1,2) <= [1,2]
Traceback (most recent call last):File "<pyshell#16>", line 1, in <module>(1,2) <= [1,2]
TypeError: unorderable types: tuple() >= list()

同是数值类型,整形类型对象和浮点型对象间可以比较大小,复数类型对象和整形或者浮点型对象不能比较大小

# 整形类型对象和浮点型对象间可以比较大小
>>> 2.1 > 2
True
>>> -1.1 < 0
True# 复数类型对象和整形或者浮点型对象不能比较大小
>>> 1 + 1j > 1
Traceback (most recent call last):File "<pyshell#22>", line 1, in <module>1 + 1j > 1
TypeError: unorderable types: complex() > int()

不同类型间的对象间可以进行相等==和!=比较,结果均不相等

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> 1 == "1"
False>>> 1 == (1)
False>>> 1 == [1]
False

整数类型和浮点数类型间的对象相等比较时,如果两个对象的数值相同,则结果相等

>>> 1 == 1.0
True

自定义类的2个实例对象都是不相等的,它们之间不能比较大小

>>> class Man():def __init__(self,name):self.name = name>>> a = Man('xiaoming')
>>> b = Man('xiaoming')
>>> a == b
False
>>> a != b
True
>>> a > b
Traceback (most recent call last):File "<pyshell#10>", line 1, in <module>a > b
TypeError: unorderable types: Man() > Man()

自定义类如果实现了__eq__()方法,则可进行相等比较,相等比较结果是__eq__()方法执行返回的结果;不等比较的结果则优先看自定义是否实现了__ne__()方法,如果有实现则不等比较结果是__ne__()方法执行返回的结果,否则是相等比较结果取反后的值

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 实现__eq__
>>> class Man():def __init__(self,name):self.name = namedef __eq__(self,other):return self.name == other.name>>> a = Man('xiaoming')
>>> b = Man('xiaoming')
>>> a == b # 实现了__eq__方法
True
>>> a != b # 实现了__eq__方法,是相等比较结果的取反后结果
False# 同时实现__eq__和__ne__
>>> class Man():def __init__(self,name):self.name = namedef __eq__(self,other):return self.name == other.namedef __ne__(self,other):return False>>> a = Man('ming')
>>> b = Man('ming')
>>> a == b
True
>>> a != b
False
# 不能进行大小比
>>> a > b
Traceback (most recent call last):File "<pyshell#7>", line 1, in <module>a>b
TypeError: unorderable types: Man() > Man()

类似的,如果自定义类实现了__lt __()__le __()__gt __()__ge __()相关方法,则自定义类的不同实例间可以进行大小比较,一般来说,实现__lt __()__le __()2个方法就足够了,这样实例对象就可以进行比较判断了

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> class Man():def __init__(self,name):self.name = namedef __le__(self,other):return self.name <= other.namedef __lt__(self,other):return self.name < other.name>>> a = Man('a')
>>> b = Man('b')
>>> a > b
False
>>> a >= b
False
>>>

is和is not运算符,用来比较2个对象是否含有一样的数值或者指向的是否是同1个对象,它们无法自定义;也可以应用于任何两个对象,从不引发异常。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 相同类型的对象
>>> 1 is 1
True
>>> 1 is 1.0
False# 不同类型的对象
>>> 1 is '1'
False
>>> 1 is not '1'
True# 类的不同实例对象
>>> a = object()
>>> b = object()
>>> a is b
False

in和not in运算符,用来在1个对象是否在序列中,而且只能用于序列类型。

>>> '1' in '12'
True>>> '1' in (1,2,3)
False

Python基础教程:内置类型之比较相关推荐

  1. python基础教程第二版和第三版哪个好-python基础教程 2版和3版哪个适合新手?!...

    python基础教程 2版和3版哪个适合新手? 现在学是学python3. 两者的差异发者本身影响并不大,个别语法细微的差比如python3的print数方式使用,一些常用模块的名称差异,一些机制的差 ...

  2. python基础教程视频(全13集)-Python基础视频教程(600集)【传智播客精品教程】...

    Python基础视频教程 初级共600节课 本套视频是传智播客紧抓未来最大趋势--人工智能,应运而生的一套Python入门视频教程,Python是学习人工智能的首选语言,而该视频是专门针对零基础的学员 ...

  3. python基础教程第三版和第二版选哪个-python基础教程 2版和3版哪个适合新手?!...

    python基础教程 2版和3版哪个适合新手? 现在学是学python3. 两者的差异发者本身影响并不大,个别语法细微的差比如python3的print数方式使用,一些常用模块的名称差异,一些机制的差 ...

  4. python基础教程书籍推荐-Python大神推荐给小白的36本入门书籍

    Python大神推荐给小白的36本入门书籍 如果看我喜欢可以找我领取Python电子书和学习资料 1.Python编程:从入门到实践 我自己最初看的这本书,觉得非常适合入门 2.python入门经典- ...

  5. python基础教程书籍推荐-入门python有什么好的书籍推荐?

    Python编程语言有许多语法结构.标准库函数和交互式开发环境功能.好在,你可以忽略大多数内容.你只需要学习部分内容,就能编写一些方便的小程序. 但在动手之前,你必须学习一些基本编程概念.就像魔法师培 ...

  6. python基础教程书籍推荐-小猿圈推荐Python入门书籍,不知道这些你就太low了。

    原标题:小猿圈推荐Python入门书籍,不知道这些你就太low了. PYPL发布6月编程语言排行榜,盘踞前五名的分别是Python.Java.Java.C# 和 PHP.近五年,Python采用率高居 ...

  7. python语言教程-Python 基础教程

    Python基础教程 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Pe ...

  8. python基础教程第三版怎么样-Python基础教程(第三版)(七)再谈抽象

    菜鸡的学习笔记. 7.1 对象魔法 多态:可对不同类型的对象执行相同的操作,但是操作将随对象所属的类型而异: 封装:对外隐藏对象内部工作原理的细节: 继承:可基于通用类创建出专用类. 按作者的意思,多 ...

  9. Python基础教程(一):简介、环境搭建、中文编码

    Python 基础教程 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像P ...

  10. 九、给小白看的第二篇Python基础教程

    本文是第二篇 @Author:Runsen @Date:Writern By 2019/04/15 and supplied By 2020/3/31 @公众号:Python之王 本系列Python基 ...

最新文章

  1. 智能手表音频特性测试_智能手表和传统手表怎么选?有这些需求选它更合适
  2. c语言 串口中断服务函数,GCC-AVR 编写中断服务函数的注意事项
  3. Nexus for linux安装
  4. docker info 显示 Docker 系统信息
  5. 网络名称 转换 网络地址_网络地址转换| 计算机网络
  6. html没有插件怎么办,html网页包插件没有插入options.title
  7. Oracle数据库中的dual表
  8. IOC容器特性注入第六篇:利用MVC注入点,把容器启动
  9. IDEA 访问Maven私服与上传组件
  10. 小车故障灯亮显示大全_车辆故障灯亮了,还能继续行驶吗?该怎么做?
  11. 关于企业如何再深化5s管理的几点建议
  12. 远程控制计算机开关机
  13. Word给公式插入编号和引用
  14. 熊猫人表情包python 代码_Python实现表情包的代码实例
  15. Scratch之制作幸运抽奖机
  16. 幂果支招:哪里找免费的Mac版音频剪辑软件
  17. YDOOK: ANSYS Maxwell 19 教程11:Maxwell 2D 静电场怎样设置激励源
  18. pandas中DataFrame字符串过滤之正则表达式
  19. python代码:VOC to cityscapes标注文件转换
  20. vivado如何添加xci文件

热门文章

  1. Deploying Kubernetes with CoreDNS using kubeadm
  2. dubbo异步调用传递性解决方法
  3. python startswith
  4. mysql 存储过程乱码的问题
  5. java管理从程序员到CTO的Java技术路线图
  6. 《魔兽世界》回首魔兽中那些悲情人物-依然泪如雨下
  7. 打开新窗口的js代码
  8. c#编写的MD5加密类
  9. mysql5 7安装教程_MySQL57安装教程
  10. 【一周入门MySQL—5】