思考 | Python中的这些运算符你真的会用吗?

17 篇文章 2 订阅
13 篇文章 0 订阅

       在我们平时敲代码时常常要用到各种各样的运算符,比如常见的算数运算和赋值运算,不过当中可能有一些经常忽略的细节,比如is==是否可以互相代替?and&一样吗?这些符号分别对应着Python中的身份运算符、比较运算符、逻辑运算符和位运算符,今天我们就来通过两个小案例一起学习吧!

  • 案例1-is==是否可以互相代替?

图片

可以看到,b is a输出结果为False,而b==a输出的结果为True。

==is分别对应于比较运算符和身份运算符,在解答之前,我们先了解一下这两类运算符。

比较运算

       比较运算符用于解决两个对象之间的比较大小的问题,输出的结果为True和False,具体符号如下表所列:

运算符描述
==判断两个对象是否相等,真为True,假为False
!=判断两个对象是否不相等,结果表示同上
> < >= <=判断大小

       比较运算符在数值型的计算中应用非常广泛,同时,我们也可以在字符串和列表里进行比较,演示如下:

print(4!=5)  #判断a与b是否相等
print("abc" < "aba") # 逐个比较两个字符串相应位置字符的ASCII码大小
print("abc" == "abc") # 比较两个字符串的内容是否相同
print([1,2,3] == [1,2,3,4])  #比较两个列表的内容是否相同
print([1,2,3] > [1,3,'a']) #逐个比较两个列表相应位置元素的ASCII码大小

输出结果为:


图片

身份运算

  身份运算用于比较两个对象的存储单元,表示两个对象是否储存在一个单元里,其运算符如下:

运算符描述
is判断两个标识符是不是引用自一个对象
is not判断两个标识符是不是引用自不同对象

       以下实例演示了身份运算符的操作:
图片

       了解完两种运算符后,我们可以解答开头提到的问题。==是比较运算符,用于判断二者是否相等;is是身份运算符,用于判断二者是否相同。

       更具体来说, == 会判断引用变量的值是否相等,is判断两个变量引用对象是否为同一块内存空间。

       上述例子中,a,b的形式相同,但是存储位置不同,所以输出结果不同。

       如果我们直接令b=a再进行判断,输出结果便都变为True,如下所示:
图片

  • 案例2-and&傻傻分不清楚?

图片

       可以看到a&b的运算结果为12,a and b的运算结果则为13,这与我们的直觉结果有所差异。

       这是因为二者为两种完全不同类型的运算符,分别对应于Python中的位运算符和逻辑运算符,下面依次进行讲解。

位运算

  位运算就是是把数值看作二进制来进行计算,计算机首先将输入的变量值转化为二进制,然后按照位运算的法则进行计算并输出结果,下面展示位运算的具体符号:

运算符描述运算规则
&按位与运算符上下都是1则为1,其他情况为0
|按位或运算符上下其中一个是1则为1,其他情况为0
^按位异或运算符上下相同为0,不同为1
~按位取反运算符一个有符号二进制的补码形式
<<左移运算符乘法运算,左移一位就是乘以2
>>右移运算符除法运算,右移一位就是除以2

       上述例子中,c的输出结果为12,看起来与a、b的取值似乎毫无关联。这是因为位运算符的结果以十进制数展示,但它的运算过程是以二进制为依据的,我们可以把上述各变量转化为二进制来便于理解:

图片

       &的运算规则为两个相应位均为1才返回1,因此上述运算结果会返回00001100,转化为十进制后即为12。

       位运算符中的其他符号与之原理类似,大家可以自己动手试试~例如,左移运算符<<代表将各二进位全部左移若干位,示例如下:

图片

逻辑运算

  逻辑运算可以分为"与" "或" "非"语句,输出的结果也为布尔值,具体如下:

运算符描述
and布尔"与",左右皆真才为真
or布尔"或",左右一个为真即为真
not布尔"非" ,条件为真则为假

操作运行如下:

print(True and True) #左为真,右也为真,与语句为真
print (True or False) #左为真,右为假,或语句为真
print (not True or False) #条件为真,非语句为假
 

以上实例输出结果:
图片

       上面的代码中运算符左右均为布尔值,因此判断起来较为容易。对于非布尔值的变量,在Python里会将0、[]、()、{}、和None对应于False;其他对应于True。此外,在布尔上下文中,若所有值均为True,and返回最后一个为True的值;若所有值均为False,and返回第一个为False的值。示例如下:

图片

在案例2中,a、b均对应为True,且b为最后一个变量,因此返回b的取值,即为13。

        到这里,我们就讲解完了上面两个略微烧脑的小案例。除了上述提到的几类运算符,Python中还包括算数运算符、赋值运算符和成员运算符等等,还需要其他资料的小伙伴们可以+威dingyu-003,或者加扣扣2931934545有免费资料领取,千万别错过哦,喜欢本文的话可以点点关注!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值