<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
這篇文章將介紹在Python中使用 "frozenset "函數的指南,該函數返回一個新的frozenset型別的Python物件。這些物件類似於Python中的set物件,但有一些關鍵的區別。本文的所有程式碼樣本都是在Ubuntu 21.04上用Python 3.9.5測試的。
frozenset 函數接收一個可迭代型別的 Python 物件的引數,並返回一個新的 frozenset 型別的 Python 物件。一個 frozenset 型別的物件是一個可雜湊的、不可改變的 Python 物件,其元素在整個生命週期內是凍結的或不可改變的。與元素可以隨時改變的集合型別的Python物件相反,frozenset中的所有專案都保持不變。frozensets 的用法可以通過例子得到最好的理解。下面將解釋其中的一些。
要獲得一個新的 frozenset型別的物件,只需提供任何可迭代的型別作為frozenset函數的可選引數。下面是一個程式碼範例。
l = [1, 2, 3, 4] fset = frozenset(l) print (fset) print (type(fset))
程式碼中的第一條語句定義了一個新的列表,它被簡單地稱為 "l"。接下來,通過呼叫frozenset函數並提供列表作為引數,建立了一個新的frozenset物件。執行上述程式碼範例後,你應該得到以下輸出。
frozenset({1, 2, 3, 4}) <class 'frozenset'>
正如你在輸出中看到的,fset是一個frozenset型別的物件,它使用了Python中set也使用的大括號語法。Frozenset只包含唯一的專案,因為不允許有重複的專案,這一點與Python的set型別物件非常相似。每個frozenset型別的物件都是一個 Python 集合,但反之亦然,因為集合項可以通過呼叫一些方法來改變。注意,你可以通過呼叫沒有任何引數的frozenset函數來建立一個空的frozenset。
如前所述,一個frozenset型別的物件有一些專案,在其生命週期內不會改變。雖然你可以用 frozenset 型別物件使用 Python 集合的方法,但是如果你試圖使用改變原始frozenset物件本身的方法,就會出現錯誤。下面是一個例子。
l = [1, 2, 3, 4] new_set = set(l) new_set.remove(1) print (new_set) fset = frozenset(l) fset.remove(1)
在上面的程式碼範例中,有兩條語句呼叫了集合型別物件的 "刪除"方法。雖然一個專案被成功地從 "new_set"中刪除,但當對 "fset"呼叫remove方法時,卻丟擲了一個錯誤。執行上述程式碼範例後,你應該得到以下輸出。
{2, 3, 4} Traceback (most recent call last): File "main.py", line 9, in <module> fset.remove(1) AttributeError: 'frozenset' object has no attribute 'remove'
其他類似的方法,如 "add"、"pop"、"clear"、"discard "等,對forzensets不起作用。
所有不修改集合項的 Python 集合方法都對frozenset型別的物件有效。所以你可以比較兩個frozenset的等價或不等價,迭代/迴圈它們,獲得兩個frozenset之間的共同或唯一元素,等等。下面是一個例子,顯示了一些與frozensets有關的方法。
fset1 = frozenset([1, 2, 3, 4]) fset2 = frozenset([3, 4, 5, 6]) print (fset1.intersection(fset2)) print (fset1.union(fset2)) print (fset1.difference(fset2)) print (len(fset1)) print (len(fset2))
這些程式碼是不言自明的。一些不改變原始frozensets值的方法已經被呼叫。這些方法主要用於比較兩個不同frozensets的元素。執行上述程式碼樣本後,你應該得到以下輸出。
frozenset({3, 4}) frozenset({1, 2, 3, 4, 5, 6}) frozenset({1, 2}) 4 4
其他一些處理凍結集的方法有:"issubset"、"issuperset"、"symmetric_difference"、"copy",等等。像">"、"<"、">="和"<="這樣的等價運運算元也適用於frozenset型別物件。
你可以通過呼叫它們的主建構函式將frozenset型別的物件轉換為其他可迭代的物件。下面的程式碼範例顯示了將frozenset型別物件轉換為list、tuple和set型別物件。
fset = frozenset([1, 2, 3, 4]) print (list(fset)) print (tuple(fset)) print (set(fset))
執行上述程式碼樣本後,你應該得到以下輸出。
[1, 2, 3, 4]
(1, 2, 3, 4)
{1, 2, 3, 4}
由於frozenset物件只不過是不可改變的/不可變的集合型別的 Python 物件,你可能會想知道它們的效用,因為集合總是可以被用來代替它們。frozenset最明顯的用例是用於宣告具有獨特元素的集合型別物件,而沒有在程式碼中意外改變它們的風險。Frozenset型別的物件可以被用作字典的鍵,而集合則不能用於同樣的目的。由於frozenset是可雜湊的,它們可以在集合內使用,而集合不能插入到另一個集合中。看一下下面的程式碼。
fset = frozenset({4, 5}) s = {1, 2, fset} print (s) s = {1, 2, {4, 5}}
在第二條語句中,一個frozenset已經在建立過程中被新增到一個集合中。在最後一條語句中,一個集合型別的物件被用在另一個集合裡面。執行上述程式碼範例後,你應該得到以下輸出。
{frozenset({4, 5}), 1, 2} Traceback (most recent call last): File "main.py", line 27, in <module> s = {1, 2, {4, 5}} TypeError: unhashable type: 'set'
正如你在輸出中看到的,forzensets可以被新增到其他集合中。另一方面,將一個集合新增到另一個集合中會產生一個錯誤,因為集合只接受可雜湊型別的專案。
Frozensets提供了一種建立不可變的集合的方法。它們只接受唯一的元素,並且是可雜湊型別的物件,所以它們可以在其他只接受可雜湊物件作為子物件的 Python 物件中使用。
到此這篇關於如何在Python中使用Frozenset物件的文章就介紹到這了,更多相關Python Frozenset物件內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45