Python運算符&=使用實例探究
寫在前面
最近我復(fù)習(xí)了一些 python 的運算符知識,然后學(xué)到了一些新的知識,&=一個全新的運算符。
位運算
你可能已經(jīng)熟悉位運算,其中&是一個二進制的 AND 運算符。1 & 1是True(1),但其他所有1和0的組合都是False(0)。
這個特性給了我們一個思路,那就是用位運算來檢查一個整數(shù)是奇數(shù)還是偶數(shù),因為奇數(shù)的最后一位始終是1(你懂的,這里說的是二進制表示):
for x in range(5):
print(f"{x}:是{'奇數(shù)' if x & 1 else '偶數(shù)'}")輸出:
0:是偶數(shù)
1:是奇數(shù)
2:是偶數(shù)
3:是奇數(shù)
4:是偶數(shù)
賦值語句
如果你熟悉賦值運算符,比如+=,你會知道它們是一種有用的簡寫形式,用于執(zhí)行一個操作,然后將結(jié)果分配回原始對象,即運算符左邊的對象。&=也是一樣,它執(zhí)行二進制AND操作,并將值分配回原始對象。
a = 11 a &= 1 print(a) a &= 0 print(a) print(type(a))
輸出:
1
0
<class 'int'>
我不確定這是巧合還是設(shè)計的結(jié)果,但是相同的語法也可以用于對兩個集合的元素執(zhí)行AND操作,(感謝Terry Davis在評論中指出)它被稱為交集更新運算符,是intersection_update()方法的縮寫。它更新原始集合,只保留在另一個集合中也有的每個元素。
但是你是否曾經(jīng)真正使用過這些&=運算符,或者想象過它們的用途?直到今天,我都沒有...
基本上,無論何時你開始有一個假設(shè),你希望接受它...直到發(fā)生一個關(guān)鍵事件,證明它是錯誤的。換句話說,如果你找到了至少一個反例,那么假設(shè)就被拒絕了,只有在它似乎仍然合理的情況下才接受假設(shè)(例如,當(dāng)它繼續(xù)通過你的測試時)。
這是科學(xué)方法的典范,如果我還記得我的學(xué)校時光的話!
實際上,在數(shù)據(jù)整理中,這是一個相當(dāng)常見的用例:我將電子表格表示為Python字典的列表,我想找到并刪除所有的空值(如None和"")的列。
以下是代碼:
def remove_empty_columns(data):
columns_to_delete = set(data[0].keys())
for row in data:
# 只有在最新行的列也為空時保持True(=刪除)
columns_to_delete &= {key for key, value in row.items() if not value}
for row in data:
for column in columns_to_delete:
del row[column]
return data
當(dāng)然我可以使用 Pandas,但這樣可以避免使用龐大的依賴庫,我甚至懷疑Pandas的底層邏輯也是這個原理(如果有興趣你可以去驗證一下)。
一個小技巧
如果你想求多個集合的交集,你可以使用 &將它們鏈接在一起:
set1 = {1, 2, 3}
set2 = {2}
set3 = {2, 3}
set4 = {1, 2}
set1 &= set2 & set3 & set4
print(set1)
輸出:
{2}
寫在最后
在 Python 中,&=是位運算符的賦值操作,用于按位與操作并將結(jié)果賦值給左操作數(shù)。它具有多種實際應(yīng)用,包括判斷整數(shù)的奇偶性、執(zhí)行位運算并更新原始對象,以及對多個集合執(zhí)行交集更新操作。
此外,我們還提供了一個實際的用例,即在數(shù)據(jù)整理中使用&=運算符刪除僅包含空值值的列。通過迭代處理字典列表并使用&=運算符來更新要刪除的列的集合,可以高效地完成此操作。
以上就是Python運算符&=使用實例探究的詳細內(nèi)容,更多關(guān)于Python運算符&=的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python中動態(tài)檢測編碼chardet的使用教程
最近利用python抓取一些網(wǎng)上的數(shù)據(jù),遇到了編碼的問題。非常頭痛,幸運的是找到了解決的方法,下面這篇文章主要跟大家介紹了關(guān)于Python中動態(tài)檢測編碼chardet的使用方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07
Python中函數(shù)參數(shù)設(shè)置及使用的學(xué)習(xí)筆記
這篇文章主要介紹了Python中函數(shù)參數(shù)設(shè)置及使用的學(xué)習(xí)筆記,記錄了一些Python2.x與Python3.x中函數(shù)參數(shù)相關(guān)的不同點,需要的朋友可以參考下2016-05-05

