跳到主要内容

Python frozenset() 函数

frozenset 是 Python set 对象的不可变版本。虽然集合的元素可以随时修改,但 frozenset 的元素在创建后保持不变。

因此,frozenset 可以用作 字典 中的键或另一个集合的元素。但像集合一样,它是无序的(元素可以设置在任何索引)。

frozenset() 函数的语法是:

frozenset([iterable])

frozenset() 参数

frozenset() 函数接受一个参数:

  • iterable(可选) - 包含用于初始化 frozenset 的元素的可迭代对象。 可迭代对象可以是集合、字典、元组 等。

frozenset() 的返回值

frozenset() 函数返回用给定可迭代对象中的元素初始化的不可变 frozenset

如果没有传递参数,它返回一个空的 frozenset

示例 1:Python frozenset() 的工作原理

# 元音的元组
vowels = ('a', 'e', 'i', 'o', 'u')

fSet = frozenset(vowels)
print('冻结的集合是:', fSet)
print('空冻结的集合是:', frozenset())

# frozensets 是不可变的
fSet.add('v')

输出

冻结的集合是: frozenset({'a', 'o', 'u', 'i', 'e'})
空冻结的集合是: frozenset()
Traceback (most recent call last):
文件 "<string>, 第 8 行, 在 <module>
fSet.add('v')
AttributeError: 'frozenset' 对象没有 'add' 属性

示例 2:用于字典的 frozenset()

当您使用字典作为冻结集合的可迭代对象时,它只使用字典的键来创建集合。

# 随机字典
person = {"name": "John", "age": 23, "sex": "male"}

fSet = frozenset(person)
print('冻结的集合是:', fSet)

输出

冻结的集合是: frozenset({'name', 'sex', 'age'})

Frozenset 操作

与普通集合一样,frozenset 也可以执行不同的操作,如 copydifferenceintersectionsymmetric_differenceunion

# Frozensets
# 初始化 A 和 B
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])

# 复制一个 frozenset
C = A.copy() # 输出: frozenset({1, 2, 3, 4})
print(C)

# 并集
print(A.union(B)) # 输出: frozenset({1, 2, 3, 4, 5, 6})

# 交集
print(A.intersection(B)) # 输出: frozenset({3, 4})

# 差集
print(A.difference(B)) # 输出: frozenset({1, 2})

# 对称差集
print(A.symmetric_difference(B)) # 输出: frozenset({1, 2, 5, 6})

输出

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

类似地,其他集合方法如 isdisjointissubsetissuperset 也可用。

# 冻结集合
# 初始化 A、B 和 C
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])
C = frozenset([5, 6])

# isdisjoint() 方法
print(A.isdisjoint(C)) # 输出: True

# issubset() 方法
print(C.issubset(B)) # 输出: True

# issuperset() 方法
print(B.issuperset(C)) # 输出: True

输出

True
True
True