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().

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