[5 min python] 內建函數 - frozenset()

更新 發佈閱讀 5 分鐘

Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。

frozenset():建立不可變集合

語法:

frozenset()           # 空的不可變集合
frozenset(iterable)   # 從可迭代物件建立不可變集合

frozenset() 就是「凍結版」的 set。它和 set 一樣不允許重複元素、支援集合運算,但建立後不能新增或刪除元素(不可變)。

# 建立 frozenset
fs = frozenset([1, 2, 3, 2, 1])
print(fs)       # frozenset({1, 2, 3})
print(type(fs)) # <class 'frozenset'>

# 空的 frozenset
empty = frozenset()
print(empty)    # frozenset()

不可變的特性

frozenset 不能新增或移除元素,嘗試修改會報錯。

fs = frozenset([1, 2, 3])

# 以下操作都會報 AttributeError
# fs.add(4)
# fs.remove(1)
# fs.discard(2)

# 但可以做查詢
print(2 in fs)   # True
print(len(fs))   # 3

frozenset 的優勢

因為不可變,frozenset 可以被 hash,所以能當作 dict 的 key 或放進另一個 set 裡(普通 set 不行)。

# 當 dict 的 key
permissions = {
    frozenset(["read"]): "viewer",
    frozenset(["read", "write"]): "editor",
    frozenset(["read", "write", "admin"]): "admin",
}

user_perms = frozenset(["read", "write"])
print(permissions[user_perms])  # editor

# 放進 set 裡(集合的集合)
groups = {
    frozenset([1, 2]),
    frozenset([3, 4]),
    frozenset([1, 2]),  # 重複,會被去除
}
print(len(groups))  # 2

集合運算一樣支援

a = frozenset([1, 2, 3])
b = frozenset([2, 3, 4])

print(a | b)  # frozenset({1, 2, 3, 4})
print(a & b)  # frozenset({2, 3})
print(a - b)  # frozenset({1})
print(a ^ b)  # frozenset({1, 4})

小小綜合例子

# 用 frozenset 建立不可變的標籤系統
articles = [
    {"title": "Python 入門", "tags": frozenset(["python", "beginner"])},
    {"title": "進階 Python", "tags": frozenset(["python", "advanced"])},
    {"title": "Web 開發", "tags": frozenset(["python", "web", "beginner"])},
]

# 收集所有標籤
all_tags = frozenset().union(*[a["tags"] for a in articles])
print(f"所有標籤:{all_tags}")
# frozenset({'python', 'beginner', 'advanced', 'web'})

# 找出包含 'beginner' 標籤的文章
for article in articles:
    if "beginner" in article["tags"]:
        print(f"初學者文章:{article['title']}")
# 初學者文章:Python 入門
# 初學者文章:Web 開發
留言
avatar-img
艾利斯幻想旅程
5會員
467內容數
網路世界是一個充滿多元性與無限可能的空間,人們可以在此分享資訊、交流思想,並展現無盡的創造力。然而,隨著社交媒體和線上論壇的普及,一種有趣且獨特的現象也隨之興起——廢文。廢文指的是那些內容看似無聊、無害,或表面上毫無意義的帖子、留言或圖片,通常目的在於娛樂或逗趣,而非提供實質價值的資訊。
艾利斯幻想旅程的其他內容
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 set():建立集合 語法: set() # 空集合 set(iterable) # 從可迭代物
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 set():建立集合 語法: set() # 空集合 set(iterable) # 從可迭代物
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 dict():建立字典 語法: dict() # 空字典 dict(**kwarg
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 dict():建立字典 語法: dict() # 空字典 dict(**kwarg
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 tuple():建立元組 語法: tuple() # 空元組 tuple(iterable) #
2026/02/21
Python「內建函數」(built-in functions)就是不用 import,隨時可以直接呼叫的函數,像 print()、len()、range() 這些,都算。 tuple():建立元組 語法: tuple() # 空元組 tuple(iterable) #
看更多