目录
7.4 对称差集 (symmetric_difference)
在 Python 3 中,集合(set
)是一种数据结构,用于存储唯一且无序的元素。集合的一个重要特性是它的元素不允许重复,这使得集合非常适合用来进行数据的去重操作。另外,集合还支持多种数学集合操作,如并集、交集、差集等。
1. 集合的创建
集合可以使用大括号 {}
或者 set()
构造函数来创建。
示例:
python
深色版本
1# 创建一个空集合
2empty_set = set()
3
4# 创建一个包含元素的集合
5numbers = {1, 2, 3, 4, 5}
6
7# 使用 set() 构造函数创建集合
8another_set = set([1, 2, 3, 4, 5])
2. 集合的特点
- 唯一性:集合中的元素必须是唯一的,重复的元素会被自动去重。
- 无序性:集合中的元素是没有顺序的,因此不能通过索引来访问集合中的元素。
- 不可变元素:集合中的元素必须是不可变类型(如整数、字符串等),不能是列表或字典等可变类型。
3. 访问集合元素
由于集合是无序的,不能通过索引来访问元素。但是可以使用 in
关键字来检查元素是否存在于集合中。
示例:
python
深色版本
1numbers = {1, 2, 3, 4, 5}
2print(3 in numbers) # 输出 True
3print(6 in numbers) # 输出 False
4. 添加元素
可以使用 add()
方法向集合中添加一个新的元素。
示例:
python
深色版本
1numbers = {1, 2, 3, 4, 5}
2numbers.add(6)
3print(numbers) # 输出 {1, 2, 3, 4, 5, 6}
5. 添加多个元素
可以使用 update()
方法向集合中添加多个元素。
示例:
python
深色版本
1numbers = {1, 2, 3, 4, 5}
2numbers.update([6, 7, 8])
3print(numbers) # 输出 {1, 2, 3, 4, 5, 6, 7, 8}
6. 删除元素
可以使用 remove()
或 discard()
方法从集合中删除元素。
示例:
python
深色版本
1numbers = {1, 2, 3, 4, 5}
2
3# 使用 remove() 方法
4numbers.remove(3)
5print(numbers) # 输出 {1, 2, 4, 5}
6
7# 使用 discard() 方法
8numbers.discard(4)
9print(numbers) # 输出 {1, 2, 5}
10
11# remove() 如果尝试移除不存在的元素会抛出 KeyError
12# discard() 如果尝试移除不存在的元素则不会抛出异常
7. 集合的数学操作
集合支持多种数学集合操作。
7.1 并集 (union
)
合并两个集合,结果集合包含所有唯一的元素。
python
深色版本
1set1 = {1, 2, 3}
2set2 = {3, 4, 5}
3union_set = set1.union(set2)
4print(union_set) # 输出 {1, 2, 3, 4, 5}
或者使用 |
操作符:
python
深色版本
1union_set = set1 | set2
2print(union_set) # 输出 {1, 2, 3, 4, 5}
7.2 交集 (intersection
)
找出两个集合中共有的元素。
python
深色版本
1set1 = {1, 2, 3}
2set2 = {3, 4, 5}
3intersection_set = set1.intersection(set2)
4print(intersection_set) # 输出 {3}
或者使用 &
操作符:
python
深色版本
1intersection_set = set1 & set2
2print(intersection_set) # 输出 {3}
7.3 差集 (difference
)
找出属于一个集合但不属于另一个集合的元素。
python
深色版本
1set1 = {1, 2, 3}
2set2 = {3, 4, 5}
3difference_set = set1.difference(set2)
4print(difference_set) # 输出 {1, 2}
或者使用 -
操作符:
python
深色版本
1difference_set = set1 - set2
2print(difference_set) # 输出 {1, 2}
7.4 对称差集 (symmetric_difference
)
找出属于任一集合但不属于两个集合都有的元素。
python
深色版本
1set1 = {1, 2, 3}
2set2 = {3, 4, 5}
3symmetric_difference_set = set1.symmetric_difference(set2)
4print(symmetric_difference_set) # 输出 {1, 2, 4, 5}
或者使用 ^
操作符:
python
深色版本
1symmetric_difference_set = set1 ^ set2
2print(symmetric_difference_set) # 输出 {1, 2, 4, 5}
8. 集合的子集和超集判断
可以使用 issubset()
和 issuperset()
方法来判断一个集合是否是另一个集合的子集或超集。
示例:
python
深色版本
1set1 = {1, 2, 3}
2set2 = {1, 2, 3, 4, 5}
3
4# 子集判断
5print(set1.issubset(set2)) # 输出 True
6
7# 超集判断
8print(set2.issuperset(set1)) # 输出 True
9. 集合的遍历
可以使用 for
循环来遍历集合中的每一个元素。
示例:
python
深色版本
1numbers = {1, 2, 3, 4, 5}
2for number in numbers:
3 print(number)
10. 冻结集合 (frozenset
)
冻结集合是一种不可变的集合类型,一旦创建后就不能再修改。
示例:
python
深色版本
1immutable_set = frozenset({1, 2, 3})
2
3# immutable_set.add(4) # 会抛出 AttributeError
总结
集合是 Python 中一种非常有用的数据结构,用于存储唯一且无序的元素。集合支持多种操作,包括添加、删除元素以及进行数学集合操作。了解和掌握集合的操作可以帮助你在处理数据时更加高效。无论是用于数据去重、集合操作还是其他数据处理任务,集合都是非常实用的选择。