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&2,2在二进制中是10,1在二进制中是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是逻辑变量:
两者用法基本类似:
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().
下一篇: sql中or和and混合使用