Python 内置函数:frozenset()

frozenset() 是 Python 内置的不可变集合类型构造函数。它与 set 类似,但一旦创建,其元素就不能被添加、删除或修改,因此可以作为字典的键或其他集合的元素。

 

一、函数语法

frozenset([iterable])

参数:

iterable:可选。任何可迭代对象(如列表、元组、集合、字符串等)。如果省略,则返回一个空的 frozenset

返回值:

返回一个新的不可变集合对象 frozenset

二、基础用法示例

1、创建空的 frozenset

fs = frozenset()
print(fs)  # frozenset()

2、由列表创建

fs = frozenset([1, 2, 3, 3, 2, 4])
print(fs)  # frozenset({1, 2, 3, 4})

3、由字符串创建

fs = frozenset("hello")
print(fs)  # frozenset({'l', 'o', 'h', 'e'})

4、由集合创建

fs = frozenset({10, 20, 30})
print(fs)  # frozenset({10, 20, 30})

  

三、frozenset 对象特点

1、不可变性

frozenset 是不可变的(immutable),创建后不能修改,因此是可哈希的(hashable)。

而 set 是可变的(mutable),支持添加、删除、修改元素。

 

2、自动去重

与 set 一样,不会存储重复元素。

 

3、无序性

与 set 一样,不保证元素顺序。

 

4、frozenset 可以作为字典的键或其他集合的元素,而 set 不可以。

fs = frozenset([1, 2])
s = set([1, 2, 3, 4, 5])
d = {fs: "ok"}
print(d)  # frozenset 可作为键  {frozenset({1, 2}): 'ok'}

dd = {s: "error"}  # 报错

  

四、 与 set 的区别

1、set 是可变的(mutable),支持添加、删除、修改元素。

2、frozenset 是不可变的(immutable),创建后不能修改。

3、frozenset 可以作为字典的键或其他集合的元素,而 set 不可以。

4、创建 frozenset 的时间复杂度与 set 相同,取决于输入数据的长度。

5、常用于需要固定集合内容且需要集合可作为字典键的场景。

6、在多线程或需要数据安全的情况下,可以用 frozenset 替代 set,防止被意外修改。

 

posted @ 2025-08-25 14:12  北京测试菜鸟  阅读(97)  评论(0)    收藏  举报