Python 中 (&,|)和(and,or)之間的區別


&,|)和(and,or)是兩組比較相似的運算符,用在“與”/ “或”上,在用法上有些許區別。
(&,|)和(and,or)是用來比較兩組變量的,格式基本上是:

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


如果a,b是數值變量, 則&, |表示位運算, and,or則依據是否非0來決定輸出,

&, |:


# 1&2,2在二進制里面是10,1在二進制中是01,那么01與運算10得到是0


1 & 2 # 輸出為 0,
1 | 2 # 輸出為3

and, or:
# 判斷變量是否為0, 是0則為False,非0判斷為True,
# and中含0,返回0; 均為非0時,返回后一個值,
2 and 0 # 返回0
2 and 1 # 返回1
1 and 2 # 返回2

# or中, 至少有一個非0時,返回第一個非0,
2 or 0 # 返回2
2 or 1 # 返回2
0 or 1 # 返回1

如何a, b是邏輯變量, 則兩類的用法基本一致

In[103]:(3>0) | (3<1)
Out[103]: True
In[104]:(3>0) and (3<1)
Out[104]: False
In[105]:(3>0) or (3<1)
Out[105]: True
In[106]:(3>0) & (3<1)
Out[106]: False

值得提及的是在DataFrame的切片過程,要注意邏輯變量的使用,
需要求得滿足多個邏輯條件的數據時,要使用& 和|,在某些條件下用and/ or會報錯‘ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().’

target_url = "http://aima.cs.berkeley.edu/data/iris.csv"
data = pd.read_csv(target_url, header=None, columns=['s_line', 's_wid', 'p_line', 'p_wid', 'kind'])
data.columns = ['s_line', 's_wid', 'p_line', 'p_wid', 'kind']
x_data = data.iloc[:, :-1]

# 在多個邏輯條件下,用& 或者|,
x_1 = x_data[x_data['s_line'] > 6 & x_data['p_wid'] > 0]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM