Python frozenset()

冻结集合(Frozen set)只是 Python 集合对象的一个不可变版本。集合中的元素可以在任何时候修改,而冻结集合的元素在创建后保持不变。

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

frozenset() 函数的语法是

frozenset([iterable])

frozenset() 参数

frozenset() 函数接受单个参数

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

frozenset() 返回值

frozenset() 函数返回一个不可变的 frozenset,该冻结集合使用给定迭代器中的元素进行初始化。

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


示例 1:Python frozenset() 的工作方式

# tuple of vowels
vowels = ('a', 'e', 'i', 'o', 'u')

fSet = frozenset(vowels)
print('The frozen set is:', fSet)
print('The empty frozen set is:', frozenset())

# frozensets are immutable
fSet.add('v')

输出

The frozen set is: frozenset({'a', 'o', 'u', 'i', 'e'})
The empty frozen set is: frozenset()
Traceback (most recent call last):
  File "<string>, line 8, in <module>
    fSet.add('v')
AttributeError: 'frozenset' object has no attribute 'add'

示例 2:frozenset() 用于字典

当你使用字典作为冻结集合的迭代器时,它只会取字典的键来创建集合。

# random dictionary
person = {"name": "John", "age": 23, "sex": "male"}

fSet = frozenset(person)
print('The frozen set is:', fSet)

输出

The frozen set is: frozenset({'name', 'sex', 'age'})

冻结集合操作

像普通集合一样,冻结集合也可以执行不同的操作,例如 copy()difference()intersection()symmetric_difference()union()

# Frozensets
# initialize A and B
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])

# copying a frozenset
C = A.copy()  # Output: frozenset({1, 2, 3, 4})
print(C)

# union
print(A.union(B))  # Output: frozenset({1, 2, 3, 4, 5, 6})

# intersection
print(A.intersection(B))  # Output: frozenset({3, 4})

# difference
print(A.difference(B))  # Output: frozenset({1, 2})

# symmetric_difference
print(A.symmetric_difference(B))  # Output: 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})

类似地,其他集合方法如 isdisjoint()issubset()issuperset() 也可用。

# Frozensets
# initialize A, B and C
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])
C = frozenset([5, 6])

# isdisjoint() method
print(A.isdisjoint(C))  # Output: True

# issubset() method
print(C.issubset(B))  # Output: True

# issuperset() method
print(B.issuperset(C))  # Output: True

输出

True
True
True
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战