说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
Python 的内置函数 frozenset([iterable]) 可构建不可变集合,称为冻结集合,返回一个新的 frozenset 对象,它包含可选参数 iterable 中的元素。 frozenset 是一个内置的类。
以下是一些使用案例:
frozenset('abc')
# frozenset({'a', 'b', 'c'})
frozenset([1,2,3])
# frozenset({1, 2, 3})
frozenset({'a':1, 'b':2})
# frozenset({'a', 'b'})
frozenset(range(3))
# frozenset({0, 1, 2})
frozenset()
# frozenset()
此函数的语法为 class frozenset([iterable])
,其中参数 iterable 是可选的,不传入时会创建一个空的冻结集合,传入时由 iterable 中的元素初始化。
参数 iterable 是一个可迭代对象(比如列表、字典、元组、字符串等),将此对象转为一个冻结集合。如果不传则为一个空的冻结集合。
冻结集合只是 Python 集合(set)对象的一个不可变版本。set 可以随时修改集合的元素,但冻结集合的元素在创建后保持不变。因此,冻结集可以用作字典中的键或另一个集合的元素。和集合一样,它不是有序的(元素不可以索引)。
为什么需要冻结的集合(即不可变的集合)呢?因为在集合的关系中,有集合的中的元素是另一个集合的情况,但是普通集合(set)本身是可变的,那么它的实例就不能放在另一个集合中(set中的元素必须是不可变类型)。
所以,frozenset提供了不可变的集合的功能,当集合不可变时,它就满足了作为集合中的元素的要求,就可以放在另一个集合中了。
冻结集合为一个不可变、无序对象,不对对其进行增加、修改、排序、下标切取等操作,但它也具有集合的一些特性,可以操作交差并补等集合的操作。
fs = frozenset([1,2,3])
fs
# frozenset({1, 2, 3})
fs.intersection([2,3,4]) # 交
# frozenset({2, 3})
fs.symmetric_difference([1,2]) # 差集(对称差)
# frozenset({3})
fs.union([2,3,4]) # 并
# frozenset({1, 2, 3, 4})
fs.isdisjoint([2,3,4]) # 是否空交集为空
# False
fs.issubset([1,2,3,4]) # 是否子集
# True
fs.issuperset([1,2]) # 是否超集
# True
# 浅拷贝
fs.copy() is fs
# True
由于它是一个容器类型,因此也支持取长度、最大值、返回重排序列等操作,可参考 集合 set。
更新时间:2022-03-28 15:40:42 标签:python 集合