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
可以保證程序執行過程中數據不會被意外更改。
GO TO FULL VERSION