比较运算符

比较运算符比较运算符 比较运算符有 lt gt lt gt in not in is is not 运算符 lt gt gt

大家好,我是讯享网,很高兴认识大家。

比较运算符

比较运算符有 <><=>===!=innot inisis not

运算符 <>>=<===!= 比较两个对象的值,<>>=<= 称为次序比较;==!= 称为一致性比较。

由于所有类型都是 object 的(直接或间接)子类型,它们都从 object 继承了默认的比较行为,一致性比较是默认的比较行为,因此可在任何对象之间进行。

False == 0 != 'a' != int != { 
   } 

讯享网
讯享网True 

对象的值在 Python 中是一个相当抽象的概念:

  • 对象的值并没有一个规范的访问方法;
  • 对象的值并不要求具有特定的构建方式,例如由其全部数据属性组成等;
  • 比较运算符实现了一个特定的对象的值概念,可以认为正是通过实现对象比较,间接地定义了对象的值。

主要内置类型的比较行为:

1,数字类型内部可跨类型比较,按数学(算法)规则正确进行比较且不会有精度损失。但复数不支持次序比较。

True == 1 == 1.0 
讯享网True 
3.14 < 3 
讯享网False 
0 >= 0j 
讯享网--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-6-df80cad0b1a4> in <module> ----> 1 0 >= 0j TypeError: '>=' not supported between instances of 'int' and 'complex' 

2,字符串使用其字符的 Unicode 码位数字值依次进行比较,某个字符比较出大小即停止。如果一个字符串包含另一个,较短的排前面。

ord('a'), ord('b'), ord('c') 
讯享网(97, 98, 99) 
'a' == 'a', 'a' == 'c' 
讯享网(True, False) 
'ab' < 'ac' 
讯享网True 
'abc' > 'ab' 
讯享网True 

3,序列(列表,元组,range 实例)只能进行类型内部比较。跨类型一致性比较结果将是不相等,跨类型次序比较将引发 TypeError。range 不支持次序比较。


讯享网

比较时按顺序对相应元素进行逐个比较,某个元素比较出大小即停止。如果一个序列元素包含另一个,较短的排前面。

(1,2) == [1,2] 
讯享网False 
[1,2] == [1,2] 
讯享网True 
[1,4] > [1,3,7] 
讯享网True 
[1,4] < [1,4,7] 
讯享网True 
(1,2) >= [1,2] 
讯享网--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-22-cb12354bca8e> in <module> ----> 1 (1,2) >= [1,2] TypeError: '>=' not supported between instances of 'tuple' and 'list' 

4, 两个字典若要相等,必须当且仅当它们具有相同的 键值对。次序比较将引发 TypeError。

{ 
   1:1} == { 
   True:1.0} 
讯享网True 
{ 
   1:1} <= { 
   True:1.0} 
讯享网--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-24-a13e7674e543> in <module> ----> 1 {1:1} <= {True:1.0} TypeError: '<=' not supported between instances of 'dict' and 'dict' 

5,集合 (set 或 frozenset 的实例) 可进行类型内部和跨类型的比较。

它们将比较运算符定义为子集和超集检测,具体详见集合知识点。这类关系没有定义完全排序。相应地,集合不适宜作为依赖于完全排序的函数的参数。

{ 
   1,2} == frozenset([1,2,1]) 
讯享网True 
{ 
   3,1} > { 
   1,2} 
讯享网False 
sorted([{ 
   3},{ 
   1},{ 
   2}]) 
讯享网[{3}, {1}, {2}] 

运算符 innot in 用于成员检测。如果 x 是 s 的成员则 x in s 求值为 True,否则为 False。x not in s 返回 x in s 取反后的值。

所有内置序列和集合类型以及字典都支持此运算,对于字典来说 in 检测其是否有给定的键。

'a' in 'abc' 
讯享网True 
'abc' in 'abbc' 
讯享网False 
1 in [1,2] 
讯享网True 
[1] in [1,2] 
讯享网False 
'a' in { 
   'a':1} 
讯享网True 

运算符 isis not 用于检测对象的标识号:当且仅当 x 和 y 是同一对象时 x is y 为真。一个对象的标识号可使用 id() 函数来确定。x is not y 会产生相反的逻辑值。

默认的一致性比较是基于对象的标识号。x is y 就意味着 x == y

a = 1 b = 1 a is b, a == b 
讯享网(True, True) 
a = (1,3) b = (1,3) a is b, a == b 
讯享网(False, True) 
小讯
上一篇 2025-03-08 09:42
下一篇 2025-02-22 10:38

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/69573.html