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

在学习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是逻辑变量:

两者用法基本类似:
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().

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章