欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中使用Frozenset對(duì)象的案例詳解

 更新時(shí)間:2022年08月24日 14:54:07   作者:吳欣  
Frozensets提供了一種創(chuàng)建不可變的集合的方法,它們只接受唯一的元素,并且是可散列類型的對(duì)象,所以它們可以在其他只接受可散列對(duì)象作為子對(duì)象的?Python?對(duì)象中使用,這篇文章主要介紹了如何在Python中使用Frozenset對(duì)象,需要的朋友可以參考下

這篇文章將介紹在Python中使用 "frozenset "函數(shù)的指南,該函數(shù)返回一個(gè)新的frozenset類型的Python對(duì)象。這些對(duì)象類似于Python中的set對(duì)象,但有一些關(guān)鍵的區(qū)別。本文的所有代碼樣本都是在Ubuntu 21.04上用Python 3.9.5測(cè)試的。

關(guān)于Frozensets

frozenset 函數(shù)接收一個(gè)可迭代類型的 Python 對(duì)象的參數(shù),并返回一個(gè)新的 frozenset 類型的 Python 對(duì)象。一個(gè) frozenset 類型的對(duì)象是一個(gè)可散列的、不可改變的 Python 對(duì)象,其元素在整個(gè)生命周期內(nèi)是凍結(jié)的或不可改變的。與元素可以隨時(shí)改變的集合類型的Python對(duì)象相反,frozenset中的所有項(xiàng)目都保持不變。frozensets 的用法可以通過例子得到最好的理解。下面將解釋其中的一些。

創(chuàng)建一個(gè)新的Frozenset對(duì)象

要獲得一個(gè)新的 frozenset類型的對(duì)象,只需提供任何可迭代的類型作為frozenset函數(shù)的可選參數(shù)。下面是一個(gè)代碼示例。

l = [1, 2, 3, 4]
fset = frozenset(l)
print (fset)
print (type(fset))

代碼中的第一條語句定義了一個(gè)新的列表,它被簡單地稱為 "l"。接下來,通過調(diào)用frozenset函數(shù)并提供列表作為參數(shù),創(chuàng)建了一個(gè)新的frozenset對(duì)象。運(yùn)行上述代碼示例后,你應(yīng)該得到以下輸出。

frozenset({1, 2, 3, 4})
<class 'frozenset'>

正如你在輸出中看到的,fset是一個(gè)frozenset類型的對(duì)象,它使用了Python中set也使用的大括號(hào)語法。Frozenset只包含唯一的項(xiàng)目,因?yàn)椴辉试S有重復(fù)的項(xiàng)目,這一點(diǎn)與Python的set類型對(duì)象非常相似。每個(gè)frozenset類型的對(duì)象都是一個(gè) Python 集合,但反之亦然,因?yàn)榧享?xiàng)可以通過調(diào)用一些方法來改變。注意,你可以通過調(diào)用沒有任何參數(shù)的frozenset函數(shù)來創(chuàng)建一個(gè)空的frozenset。

一旦創(chuàng)建了Frozenset,你就不能修改它了

如前所述,一個(gè)frozenset類型的對(duì)象有一些項(xiàng)目,在其生命周期內(nèi)不會(huì)改變。雖然你可以用 frozenset 類型對(duì)象使用 Python 集合的方法,但是如果你試圖使用改變?cè)?strong>frozenset對(duì)象本身的方法,就會(huì)出現(xiàn)錯(cuò)誤。下面是一個(gè)例子。

l = [1, 2, 3, 4]
new_set = set(l)
new_set.remove(1)
print (new_set)
fset = frozenset(l)
fset.remove(1)

在上面的代碼示例中,有兩條語句調(diào)用了集合類型對(duì)象的 "刪除"方法。雖然一個(gè)項(xiàng)目被成功地從 "new_set"中刪除,但當(dāng)對(duì) "fset"調(diào)用remove方法時(shí),卻拋出了一個(gè)錯(cuò)誤。運(yùn)行上述代碼示例后,你應(yīng)該得到以下輸出。

{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 "等,對(duì)forzensets不起作用。

與 Frozensets 一起使用的方法

所有不修改集合項(xiàng)的 Python 集合方法都對(duì)frozenset類型的對(duì)象有效。所以你可以比較兩個(gè)frozenset的等價(jià)或不等價(jià),迭代/循環(huán)它們,獲得兩個(gè)frozenset之間的共同或唯一元素,等等。下面是一個(gè)例子,顯示了一些與frozensets有關(guān)的方法。

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))

這些代碼是不言自明的。一些不改變?cè)?strong>frozensets值的方法已經(jīng)被調(diào)用。這些方法主要用于比較兩個(gè)不同frozensets的元素。運(yùn)行上述代碼樣本后,你應(yīng)該得到以下輸出。

frozenset({3, 4})
frozenset({1, 2, 3, 4, 5, 6})
frozenset({1, 2})
4
4

其他一些處理凍結(jié)集的方法有:"issubset"、"issuperset"、"symmetric_difference"、"copy",等等。像">"、"<"、">="和"<="這樣的等價(jià)運(yùn)算符也適用于frozenset類型對(duì)象。

Frozenset可以被轉(zhuǎn)換為其他可迭代類型

你可以通過調(diào)用它們的主構(gòu)造函數(shù)將frozenset類型的對(duì)象轉(zhuǎn)換為其他可迭代的對(duì)象。下面的代碼示例顯示了將frozenset類型對(duì)象轉(zhuǎn)換為list、tuple和set類型對(duì)象。

fset = frozenset([1, 2, 3, 4])
print (list(fset))
print (tuple(fset))
print (set(fset))

運(yùn)行上述代碼樣本后,你應(yīng)該得到以下輸出。

[1, 2, 3, 4]

(1, 2, 3, 4)

{1, 2, 3, 4}

Frozenset使用案例

由于frozenset對(duì)象只不過是不可改變的/不可變的集合類型的 Python 對(duì)象,你可能會(huì)想知道它們的效用,因?yàn)榧峡偸强梢员挥脕泶嫠鼈儭?strong>frozenset最明顯的用例是用于聲明具有獨(dú)特元素的集合類型對(duì)象,而沒有在代碼中意外改變它們的風(fēng)險(xiǎn)。Frozenset類型的對(duì)象可以被用作字典的鍵,而集合則不能用于同樣的目的。由于frozenset是可散列的,它們可以在集合內(nèi)使用,而集合不能插入到另一個(gè)集合中??匆幌孪旅娴拇a。

fset = frozenset({4, 5})
s = {1, 2, fset}
print (s)
s = {1, 2, {4, 5}}

在第二條語句中,一個(gè)frozenset已經(jīng)在創(chuàng)建過程中被添加到一個(gè)集合中。在最后一條語句中,一個(gè)集合類型的對(duì)象被用在另一個(gè)集合里面。運(yùn)行上述代碼示例后,你應(yīng)該得到以下輸出。

{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可以被添加到其他集合中。另一方面,將一個(gè)集合添加到另一個(gè)集合中會(huì)產(chǎn)生一個(gè)錯(cuò)誤,因?yàn)榧现唤邮芸缮⒘蓄愋偷捻?xiàng)目。

總結(jié)

Frozensets提供了一種創(chuàng)建不可變的集合的方法。它們只接受唯一的元素,并且是可散列類型的對(duì)象,所以它們可以在其他只接受可散列對(duì)象作為子對(duì)象的 Python 對(duì)象中使用。

到此這篇關(guān)于如何在Python中使用Frozenset對(duì)象的文章就介紹到這了,更多相關(guān)Python Frozenset對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論