在學習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().