CodeGym /Java Adesua /Python SELF TW /不可變集 — frozenset

不可變集 — frozenset

Python SELF TW
等級 10 , 課堂 6
開放

8.1 set元組

集合 frozenset不可變型的 set。它提供集合的所有功能,但不允許 在創建後更改其元素。frozenset 在需要存儲唯一元素並保證 集合不會被更改的情況下非常有用。

創建 frozenset

要創建 frozenset,可以使用函數 frozenset(), 對它傳遞一個可迭代對象(列表、元組、字符串等)。

例子:

從列表創建 frozenset


# 從列表創建 frozenset
fset1 = frozenset([1, 2, 3, 4])
print(fset1)  # 輸出: frozenset({1, 2, 3, 4})

從字符串創建 frozenset


# 從字符串創建 frozenset
fset2 = frozenset("hello")
print(fset2)  # 輸出: frozenset({'h', 'e', 'l', 'o'})

創建空的 frozenset


# 創建空的 frozenset
fset3 = frozenset()
print(fset3)  # 輸出: frozenset()
        

8.2 frozenset 的主要方法

frozenset 支持大部分可變集 (set) 的方法,但由於它是不可變的,無法使用那些改變集的方法。

例子:

集合的聯集 (union)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# 集合的聯集 (union)
print(fset1 | fset2)  # 輸出: frozenset({1, 2, 3, 4, 5, 6})
print(fset1.union(fset2))  # 輸出: frozenset({1, 2, 3, 4, 5, 6})
        

集合的交集 (intersection)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# 集合的交集 (intersection)
print(fset1 & fset2)  # 輸出: frozenset({3, 4})
print(fset1.intersection(fset2))  # 輸出: frozenset({3, 4})
        

集合的差集 (difference)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# 集合的差集 (difference) 
print(fset1 - fset2)  # 輸出: frozenset({1, 2})
print(fset1.difference(fset2))  # 輸出: frozenset({1, 2})
        

對稱差集 (symmetric difference)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# 對稱差集 (symmetric difference)
print(fset1 ^ fset2)  # 輸出: frozenset({1, 2, 5, 6})
print(fset1.symmetric_difference(fset2))  # 輸出: frozenset({1, 2, 5, 6})
        

8.3 frozenset 的應用

frozenset 在以下情況中很有用:

用作字典的鍵:

由於 frozenset 是不可變的,它可以用作字典的鍵。


fset1 = frozenset([1, 2, 3])
fset2 = frozenset([3, 4, 5])
        
d = {fset1: "first", fset2: "second"}
print(d)  # 輸出: {frozenset({1, 2, 3}): 'first', frozenset({3, 4, 5}): 'second'}
    

存儲不可變的集合:

如果需要創建一個不會再被更改的唯一元素集合,frozenset 是很好的選擇。

數據安全:

使用 frozenset 可以保證程序執行過程中數據不會被意外更改。

1
Опрос
字串操作,  10 уровень,  6 лекция
недоступен
字串操作
字串操作
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION