欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python中(and,or)和(&,|)的区别

程序员文章站 2022-03-08 17:39:34
...

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

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

如果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
  • 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

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

如果a和b是逻辑变量:

两者用法基本类似:
Python中(and,or)和(&,|)的区别
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().

相关标签: python