CodeGym /课程 /Python SELF ZH /不可变集合 — frozenset

不可变集合 — frozenset

Python SELF ZH
第 10 级 , 课程 6
可用

8.1 set-元组

集合 frozenset不可变的 set。它提供了集合的所有功能,但不允许在创建后修改其元素。frozenset在需要存储唯一元素并确保集合不被改变时非常有用。

创建 frozenset

可以使用函数 frozenset() 来创建 frozenset,传递一个可迭代对象(列表、元组、字符串等)给它。

例子:

从列表创建frozenset


# 从列表创建 frozenset
fset1 = frozenset([1, 2, 3, 4])
print(fset1)  # 输出: frozenset({1, 2, 3, 4})

从字符串创建frozenset


# 从字符串创建 frozenset
fset2 = frozenset("hello")
print(fset2)  # 输出: frozenset({'h', 'e', 'l', 'o'})

创建空的frozenset


# 创建空的 frozenset
fset3 = frozenset()
print(fset3)  # 输出: frozenset()
        

8.2 frozenset 的基本方法

frozenset 支持大多数可变集合 (set) 的方法,但由于它是不可变的,无法使用改变集合的方法。

例子:

集合的合并 (union)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# 集合的合并 (union)
print(fset1 | fset2)  # 输出: frozenset({1, 2, 3, 4, 5, 6})
print(fset1.union(fset2))  # 输出: frozenset({1, 2, 3, 4, 5, 6})
        

集合的交集 (intersection)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# 集合的交集 (intersection)
print(fset1 & fset2)  # 输出: frozenset({3, 4})
print(fset1.intersection(fset2))  # 输出: frozenset({3, 4})
        

集合的差集 (difference)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# 集合的差集 (difference) 
print(fset1 - fset2)  # 输出: frozenset({1, 2})
print(fset1.difference(fset2))  # 输出: frozenset({1, 2})
        

对称差 (symmetric difference)


fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
            
# 对称差 (symmetric difference)
print(fset1 ^ fset2)  # 输出: frozenset({1, 2, 5, 6})
print(fset1.symmetric_difference(fset2))  # 输出: frozenset({1, 2, 5, 6})
        

8.3 frozenset 的应用

frozenset 在以下情况很有用:

作为字典的键使用:

因为 frozenset 是不可变的,可以用作字典的键。


fset1 = frozenset([1, 2, 3])
fset2 = frozenset([3, 4, 5])
        
d = {fset1: "first", fset2: "second"}
print(d)  # 输出: {frozenset({1, 2, 3}): 'first', frozenset({3, 4, 5}): 'second'}
    

存储不可变集合:

如果需要创建一个不会被更改的唯一元素集合,那么frozenset是个很好的选择。

数据安全:

使用 frozenset 可以保证数据在程序运行期间不会被意外更改。

1
调查/小测验
字符串操作第 10 级,课程 6
不可用
字符串操作
字符串操作
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION