Python中你不知道的(and,or)和(&,|)的区别

举报
万里羊 发表于 2021/08/26 00:37:27 2021/08/26
【摘要】 在学习C语言的时候,谈到逻辑运算大家肯定会想到且(&&)、或(||)非( ! ),但是当我们接触到Python时会发现逻辑运算并没有(&&、||)而是(&、|)或者...

在学习C语言的时候,谈到逻辑运算大家肯定会想到且(&&)、或(||)非( ! ),但是当我们接触到Python时会发现逻辑运算并没有(&&、||)而是(&、|)或者是( and、or )。而在Python中(&、|)和(and、or)是一组比较相似的运算符,用在“与/或”上会有一些区别。它们都是用来比较两组变量的,基本格式如下:

a and b
a or b
a & b
a | b

  
 
  • 1
  • 2
  • 3
  • 4

如果a和b是数值变量:

  • &、| 表示位运算:
1 & 2  #输出为0
1 | 2  #输出为3

#1&22在二进制中是101在二进制中是01,那么10与运算01得到的就是0
#1|2,同理01或运算10得到的二进制数是11,换算为十进制就是 3

以此类推:
4 & 2 & 1 #输出为0

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • and、or则依据是否非0来决定输出:
2 and 0 #输出0
1 and 2 #输出2
2 and 1 #输出1

2 or 0 #输出2
2 or 1 #输出2
0 or 1 #输出0
1 or 2 #输出1
4 or 2 or 1 #输出4
2 or 4 or 1 #输出2

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

从以上代码可以得出:
and:判断变量是否为0,如果是0则返回0,如果不是零则输出后一个数.
** or**:有0时返回0,没有0时返回第一个非0数

如果a和b是逻辑变量:

两者用法基本类似:
Alt
and和&:表示如果两个条件都满足则返回1,如果有一个条件不成立就返回0
or和 | : 表示如果两个条件同时都不满足则返回0,有一个条件成立就返回1

值得注意的是在DataFrame的切片过程,要注意逻辑变量的使用!

需要求得满足多个逻辑条件的数据时,要使用& 和|,在某些条件下用and/ or会报错:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

文章来源: wlybsy.blog.csdn.net,作者:万里羊,版权归原作者所有,如需转载,请联系作者。

原文链接:wlybsy.blog.csdn.net/article/details/104896855

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。