Python 中的集合(Set Types)是一种无序的、不包含重复元素的数据结构。集合主要用于数学上的集合操作,如并集、交集、差集和对称差集等。Python 提供了两种标准的集合类型:set 和 frozenset。
- set
set 是一个可变的数据类型,意味着你可以添加或删除集合中的元素。创建 set 的方式很简单,只需要将一组元素放在大括号 {} 中,或使用 set() 函数。注意,空的大括号 {} 用来创建空字典,而不是空集合;要创建空集合,必须使用 set()。
示例
python
使用大括号创建集合
my_set = {1, 2, 3, 4, 5}
使用 set() 函数创建集合
another_set = set([1, 2, 3, 4, 5])
空集合的创建
empty_set = set()
添加元素
my_set.add(6)
删除元素
my_set.remove(2) # 如果元素不存在,则抛出 KeyError
或者使用 discard 方法,如果不存在元素,则不抛出异常
my_set.discard(7)
集合的运算
union = my_set | another_set # 并集
intersection = my_set & another_set # 交集
difference = my_set - another_set # 差集
symmetric_difference = my_set ^ another_set # 对称差集
print(union)
print(intersection)
print(difference)
print(symmetric_difference)
- frozenset
frozenset 是一个不可变的数据类型,意味着一旦创建,你就不能添加或删除元素。frozenset 主要用于需要不可变集合的场景,比如作为字典的键或集合的元素。
示例
python
创建一个 frozenset
my_frozenset = frozenset([1, 2, 3, 4, 5])
尝试修改 frozenset 会抛出 TypeError
my_frozenset.add(6) # 这会抛出 TypeError
frozenset 同样支持集合运算
another_frozenset = frozenset([4, 5, 6, 7, 8])
union = my_frozenset | another_frozenset
intersection = my_frozenset & another_frozenset
print(union)
print(intersection)
集合的特点
无序性:集合中的元素是无序的,即集合中的元素没有固定的顺序。
唯一性:集合中的元素是唯一的,即集合中不会出现重复的元素。
集合运算:支持多种集合运算,如并集、交集、差集和对称差集等。
集合类型在 Python 中非常有用,特别是在处理数学上的集合运算或需要快速检查元素是否存在于某个集合中时。