1. 程式人生 > >Python 中 (&,|)和(and,or)之間的區別

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

ima item 技術分享 技術 value columns 圖片 運算符 emp

(&,|)和(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]

技術分享圖片

技術分享圖片

好了,本文就給大夥分享到這裏,文末分享一波福利

技術分享圖片
技術分享圖片

獲取方式:加python群 839383765 即可獲取!

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