在Python中,比较运算符对于条件语句(如if
、else
和elif
)和循环语句(如while
和for
)非常重要。这些运算符也被称为关系运算符。一些众所周知的运算符包括<
表示小于,>
表示大于。
Python还使用了另外两个结合了=
符号的运算符。<=
表示小于等于,>=
表示大于等于。
Python中有两种额外的比较运算符,即==
和!=
,分别用于判断是否相等和是否不等。因此,在Python中共有六种比较运算符,并在下表中列出:
运算符 |
描述 |
示例 |
< |
小于 |
a < b |
> |
大于 |
a > b |
<= |
小于等于 |
a <= b |
>= |
大于等于 |
a >= b |
== |
相等 |
a == b |
!= |
不等 |
a != b |
比较运算符本质上是二元的,需要两个操作数。包含比较运算符的表达式称为布尔表达式,总是返回True
或False
。
示例
a = 5
b = 7
print(a > b)
print(a < b)
这段代码会产生如下输出:
False
True
操作数可以是Python字面量、变量或表达式。由于Python支持混合算术,你可以使用任何类型的数字作为操作数。
整数的比较
下面的代码演示了使用Python的比较运算符与整数的比较:
print("Both operands are integer")
a = 5
b = 7
print("a=", a, "b=", b, "a>b is", a > b)
print("a=", a, "b=", b, "a<b is", a < b)
print("a=", a, "b=", b, "a==b is", a == b)
print("a=", a, "b=", b, "a!=b is", a != b)
这段代码会产生如下输出:
Both operands are integer
a= 5 b= 7 a>b is False
a= 5 b= 7 a<b is True
a= 5 b= 7 a==b is False
a= 5 b= 7 a!=b is True
浮点数的比较
下面的例子展示了整数和浮点数操作数之间的比较:
print("comparison of int and float")
a = 10
b = 10.0
print("a=", a, "b=", b, "a>b is", a > b)
print("a=", a, "b=", b, "a<b is", a < b)
print("a=", a, "b=", b, "a==b is", a == b)
print("a=", a, "b=", b, "a!=b is", a != b)
这段代码会产生如下输出:
comparison of int and float
a= 10 b= 10.0 a>b is False
a= 10 b= 10.0 a<b is False
a= 10 b= 10.0 a==b is True
a= 10 b= 10.0 a!=b is False
复数的比较
尽管复数对象在Python中是一种数值类型,但它的行为与其他类型不同。Python不支持<
和>
运算符,但它确实支持相等(==
)和不等(!=
)运算符。
print("comparison of complex numbers")
a = 10 + 1j
b = 10. - 1j
print("a=", a, "b=", b, "a==b is", a == b)
print("a=", a, "b=", b, "a!=b is", a != b)
这段代码会产生如下输出:
comparison of complex numbers
a= (10+1j) b= (10-1j) a==b is False
a= (10+1j) b= (10-1j) a!=b is True
尝试使用<
或>
运算符会得到TypeError
。
print("comparison of complex numbers")
a = 10 + 1j
b = 10. - 1j
print("a=", a, "b=", b, "a<b is", a < b)
print("a=", a, "b=", b, "a>b is", a > b)
这段代码会产生如下输出:
comparison of complex numbers
Traceback (most recent call last):
File "C:\Users\mlath\examples\example.py", line 5, in <module>
print("a=", a, "b=", b, "a<b is", a < b)
TypeError: '<' not supported between instances of 'complex' and 'complex'
布尔值的比较
Python中的布尔对象实际上是整数:True
是1,False
是0。实际上,Python把任何非零的数都当作True
处理。Python中的布尔对象的比较是可以进行的。“False < True”是True
!
print("comparison of Booleans")
a = True
b = False
print("a=", a, "b=", b, "a<b is", a < b)
print("a=", a, "b=", b, "a>b is", a > b)
print("a=", a, "b=", b, "a==b is", a == b)
print("a=", a, "b=", b, "a!=b is", a != b)
这段代码会产生如下输出:
comparison of Booleans
a= True b= False a<b is False
a= True b= False a>b is True
a= True b= False a==b is False
a= True b= False a!=b is True
序列类型的比较
在Python中,只能对相似的序列对象进行比较。字符串对象只能与另一个字符串比较。列表不能与元组比较,即使它们有相同的元素。
print("comparison of different sequence types")
a = (1, 2, 3)
b = [1, 2, 3]
print("a=", a, "b=", b, "a<b is", a < b)
这段代码会产生如下输出:
comparison of different sequence types
Traceback (most recent call last):
File "C:\Users\mlath\examples\example.py", line 5, in <module>
print("a=", a, "b=", b, "a<b is", a < b)
TypeError: '<' not supported between instances of 'tuple' and 'list'
序列对象通过词典序排序机制进行比较。比较从第0个索引处的项开始。如果它们相等,则比较移动到下一个索引,直到某处索引上的项不相等,或者其中一个序列耗尽为止。如果一个序列是另一个序列的初始子序列,则较短的序列被认为较小。
哪个操作数较大取决于不相等项所在索引处的值的差异。例如,'BAT' > 'BAR'
是True
,因为在Unicode顺序中T位于R之后。
如果两个序列的所有项都相等,则认为这两个序列相等。
print("comparison of strings")
a = 'BAT'
b = 'BALL'
print("a=", a, "b=", b, "a<b is", a < b)
print("a=", a, "b=", b, "a>b is", a > b)
print("a=", a, "b=", b, "a==b is", a == b)
print("a=", a, "b=", b, "a!=b is", a != b)
这段代码会产生如下输出:
comparison of strings
a= BAT b= BALL a<b is False
a= BAT b= BALL a>b is True
a= BAT b= BALL a==b is False
a= BAT b= BALL a!=b is True
下面是一个元组比较的例子:
print("comparison of tuples")
a = (1, 2, 4)
b = (1, 2, 3)
print("a=", a, "b=", b, "a<b is", a < b)
print("a=", a, "b=", b, "a>b is", a > b)
print("a=", a, "b=", b, "a==b is", a == b)
print("a=", a, "b=", b, "a!=b is", a != b)
这段代码会产生如下输出:
a= (1, 2, 4) b= (1, 2, 3) a<b is False
a= (1, 2, 4) b= (1, 2, 3) a>b is True
a= (1, 2, 4) b= (1, 2, 3) a==b is False
a= (1, 2, 4) b= (1, 2, 3) a!=b is True
字典对象的比较
Python中没有定义<
和>
运算符来比较字典。在这种情况下,会报告TypeError: '<' not supported between instances of 'dict' and 'dict'
。
相等性的比较检查两个字典项的数量是否相同。字典的长度是指其中键值对的数量。
Python字典通过长度进行简单比较。元素较少的字典被认为比元素较多的字典小。
print("comparison of dictionary objects")
a = {1: 1, 2: 2}
b = {2: 2, 1: 1, 3: 3}
print("a=", a, "b=", b, "a==b is", a == b)
print("a=", a, "b=", b, "a!=b is", a != b)
这段代码会产生如下输出:
comparison of dictionary objects
a= {1: 1, 2: 2} b= {2: 2, 1: 1, 3: 3} a==b is False
a= {1: 1, 2: 2} b= {2: 2, 1: 1, 3: 3} a!=b is