Python进阶之路3.4.4比较运算符-创新互联

3.4.4 比较运算符

尽管if语句本身的知识到现在为止已经全部讲完了,不过我们的学习远没有结束。前面给出的if语句的条件都非常简单,但在实际应用中,if语句的条件可能非常复杂,这就需要使用到节要介绍的比较运算符。

创新互联服务项目包括阿勒泰网站建设、阿勒泰网站制作、阿勒泰网页制作以及阿勒泰网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,阿勒泰网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到阿勒泰省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

现在先来看一下表3-1列出的Python语言中的比较运算符

表 3-1 Python语言中的比较运算符

逻辑表达式 描述
x == yx等于y
x < yx小于y
x > yx大于y
x >= yx大于或等于y
x <= yx小于或等于y
x != yx不等于y
x is yx和y是同一个对象
x is not yx和y不是同一个对象
x in yx是y容器的成员,例如,y是列表[1,2,3,4],那么1是y的成员,而5不是y的成员
x not in yx不是y容器成员

在表 3-1 描述的比较运算符中,涉及对象和容器的概念,目前还没讲这些深入的技术,在本节只需了解Python语言可以通过比较运算符操作对象和容器即可。在后面介绍对象和容器的章节,会详细介绍如何利用相关比较运算符操作对象和容器。

在比较运算中,最常用的就是判断两个值是否相等。例如,a大于b,a等于b,这些运算符包括"==","<",">",">=","<="和"!="。

如果比较两个值是否相等,需要使用"=="运算符,也就是两个等号。

>>> "hello" == "hello"
True
>>> "Hello" == "hello"
False
>>> 30 == 10
False

要注意,如果比较两个字符串是否相等,会比较两个字符串中对应的每一个字母,所以"Hello"和"hello"并不相等,也就是说比较运算符是对大小写敏感的。

在使用"=="运算符时一定要注意,不要写成一个等号(=),否则就成赋值运算符了。对于赋值运算符来说,等号(=)左侧必须是一个变量,否则会抛出异常。

对于字符串、数值等类型的值,也可以使用大于(>)、小于(<)等运算符比较它们的大小。

>>> "hello" > "Hello"
True
>>> 20 > 30
False
>>> s = 40
>>> s <= 30
False
>>> "hello" != "Hello"
True

Python语言在比较字符串时,会按字母ASCII顺序进行比较,例如,比较"hello"和"Hello"的大小。首先会比较"h"和"H"的大小,很明显'h'的ASCII大于'H'的ASCII,所以后面的都不需要比较了,因此,"hello" > "Hello"的结果是True。

除了比较大小的几个运算符外,还有用来确定两个对象是否相等的运算符,以及判断某个值是否属于一个容器的运算符,尽管现在还没有讲到容器和对象。但这里不妨做一个试验,来看看这些运算符如何使用,以便以后学习对象和容器时,更容易掌握这些运算符。

用于判断两个对象是否相等的运算符是is和is not,这两个运算符看起来和等于运算符(==)差不多,不过用起来却大有玄机。

>>> x = y = [1,2,3]
>>> z = [1,2,3]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
>>> x is not z
True

在上面的代码中,使用 = =和is比较x和y时结果完全一样,不过在比较x和z时,就会体现出差异。x == z的结果是True,而x is z的结果却是False。出现这样的结果,原因是==运算符比较的是对象的值,x和z的值都是一个列表(也可以将列表看做一个对象),并且列表中的元素个数和值完全一样,所以x == z的结果是True。但is运算符用于判断对象的同一性,也就是说,不仅对象的值要完全一样,而且对象本身还要是同一个对象,很明显,x和y是同一个对象,因为在赋值时,先将一个列表赋值给y,然后在将y的值赋给x,所以x和y指向了同一个对象,而z另外赋值了一个列表,所以z和x、y尽管值相同,但并不是指向的同一个对象,因此,x is z的结果就是False。

判断某个值是否属于一个容器,要使用in和not in运算符。下面的代码首先定义一个列表变量x,然后判断变量y和一些值是否属于x。

>>> x = [1,2,3,4,5] #定义一个列表变量
>>> y = 3
>>> 1 in x
True
>>> y in x
True
>>> 20 in x
False
>>> 20 not in x
True

in和not in运算符也可以用于判断一个字符串是否包含另外一个字符串,也就是说,可以将字符串看作字符或子字符串的容器。

>>> s = "hello world"
>>> 'e' in s
True
>>> "e" in s
True
>>> "x" in s
False
>>> "x" not in s
True
>>> "world" in s
True

如果遇到需要将多个逻辑表达式组合在一起的情况,需要用到逻辑与(and)、逻辑或(or)和逻辑非(not)。逻辑与的运算规则是只有x and y中的x和y都为True时,运算结果才是True,否则为False。逻辑或的运算规则是只有x or y中的x和y都为False时,运算结果才是False,否则都为True。逻辑非的运算规则是not x中,x为True,运算结果为False,x为False,运算结果为True。

>>> 20 < 30 and 40 < 50
True
>>> 20 > 40 or 20 < 40
True
>>> not 20 > 40
True

[例 3.5] 本例演示了比较运算符的基本用法。

print(20 == 30)             #判断20和30是否相等,运行结果:False
x = 20
y = 40
print(x < y)                #判断x是否小于y,运行结果:True

if x > y:                   #条件不满足
    print("x > y")
else:                       #条件满足
    print("x < y")

s1 = "hello"
s2 = "Hello"

if s1 >= s2 and x > y:      #条件不满足
    print("满足条件")
elif not s1 < s2:           #条件满足
    print("基本满足条件")
else:
    print("不满足条件")       #条件不满足

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:Python进阶之路3.4.4比较运算符-创新互联
浏览路径:http://myzitong.com/article/dcijcj.html