Set 与 Frozenset 的基本概念
Set 是 Python 中的一种内置数据类型,用于存储无序且不重复的元素集合。Set 是可变的,意味着可以在创建后添加或删除元素。Frozenset 是 Set 的不可变版本,一旦创建,其内容无法更改。
# 创建 Set
my_set = {1, 2, 3, 4}
# 创建 Frozenset
my_frozenset1 = frozenset([1, 2, 3, 4])
#输出 frozenset({1, 2, 3, 4})
my_frozenset2 = frozenset("abcd")
#输出 frozenset({'b', 'c', 'd', 'a'})
Set 中的基本运算
Set 支持多种集合运算,包括并集、交集、差集和对称差集。
并集 (Union)
并集操作返回两个集合中所有元素的集合。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1 | set2 # 或者使用 set1.union(set2)
print(union_set) # 输出: {1, 2, 3, 4, 5}
交集 (Intersection)
交集操作返回两个集合中共同存在的元素。
intersection_set = set1 & set2 # 或者使用 set1.intersection(set2)
print(intersection_set) # 输出: {3}
差集 (Difference)
差集操作返回第一个集合中存在但第二个集合中不存在的元素。
difference_set = set1 - set2 # 或者使用 set1.difference(set2)
print(difference_set) # 输出: {1, 2}
对称差集 (Symmetric Difference)
对称差集操作返回两个集合中不重复的元素。
symmetric_difference_set = set1 ^ set2 # 或者使用 set1.symmetric_difference(set2)
print(symmetric_difference_set) # 输出: {1, 2, 4, 5}
Set 的更新操作
Set 是可变的,因此可以通过多种方法更新集合。
添加元素
使用 add
方法向集合中添加单个元素。
my_set.add(5)
print(my_set) # 输出: {1, 2, 3, 4, 5}
更新集合
使用 update
方法向集合中添加多个元素。
my_set.update([6, 7, 8])
print(my_set) # 输出: {1, 2, 3, 4, 5, 6, 7, 8}
删除元素
使用 remove
或 discard
方法从集合中删除元素。remove
在元素不存在时会抛出异常,而 discard
不会。
my_set.remove(8)
print(my_set) # 输出: {1, 2, 3, 4, 5, 6, 7}
my_set.discard(9) # 不会抛出异常
Frozenset 的特性
Frozenset 是不可变的,因此不支持添加或删除元素的操作。但 Frozenset 支持与 Set 相同的集合运算。
frozenset1 = frozenset([1, 2, 3])
frozenset2 = frozenset([3, 4, 5])
# 并集
union_frozenset = frozenset1 | frozenset2
print(union_frozenset) # 输出: frozenset({1, 2, 3, 4, 5})
# 交集
intersection_frozenset = frozenset1 & frozenset2
print(intersection_frozenset) # 输出: frozenset({3})
Set 与 Frozenset 的应用场景
Set 适用于需要频繁修改集合内容的场景,而 Frozenset 适用于需要不可变集合的场景,例如作为字典的键或另一个集合的元素。
# 使用 Frozenset 作为字典的键
my_dict = {frozenset([1, 2]): "value"}
print(my_dict) # 输出: {frozenset({1, 2}): 'value'}
通过理解 Set 和 Frozenset 的特性及其运算,可以更灵活地处理集合数据。