简介
- set 数据类型相关学习笔记
python3 set数据类型 详解
在 Python 中,set
(集合)是一种无序、不重复、可变的数据类型。集合是基于哈希表实现的,它的特点是快速查找、去重和支持集合运算。集合广泛用于去除重复元素、数学集合运算以及作为字典的键等场景。
1. 创建集合
集合可以通过大括号 {}
或 set()
函数来创建。需要注意,创建一个空集合时,必须使用 set()
,因为 {}
会创建一个空字典。
1 | # 创建一个非空集合 |
2. 集合的基本特性
- 无序性:集合中的元素没有固定的顺序,因此不能通过索引访问元素。
- 不重复:集合自动去重,重复的元素在集合中只保留一个。
- 可变性:集合是可变的,可以添加、删除元素。
1 | my_set = {1, 2, 3, 4, 5} |
3. 访问集合中的元素
集合是无序的,因此不能像列表或元组那样通过索引直接访问元素。但可以使用循环或者集合的其他方法进行遍历。
1 | my_set = {1, 2, 3, 4, 5} |
4. 常用集合方法
4.1 add()
向集合中添加单个元素。如果元素已存在,add()
不会做任何操作。
1 | my_set = {1, 2, 3} |
4.2 remove()
删除集合中的指定元素。如果元素不存在,remove()
会抛出 KeyError
。
1 | my_set = {1, 2, 3} |
4.3 discard()
与 remove()
类似,但如果元素不存在,不会抛出错误。
1 | my_set = {1, 2, 3} |
4.4 pop()
删除并返回集合中的一个元素(由于集合是无序的,删除的元素是随机的)。
1 | my_set = {1, 2, 3} |
4.5 clear()
清空集合中的所有元素。
1 | my_set = {1, 2, 3} |
4.6 copy()
返回集合的一个浅拷贝。
1 | my_set = {1, 2, 3} |
5. 集合运算
5.1 union()
或 |
(并集)
返回两个集合的并集,即包含两个集合中所有元素的集合。
1 | set1 = {1, 2, 3} |
5.2 intersection()
或 &
(交集)
返回两个集合的交集,即只包含两个集合中共同存在的元素。
1 | set1 = {1, 2, 3} |
5.3 difference()
或 -
(差集)
返回在第一个集合中存在而第二个集合中不存在的元素。
1 | set1 = {1, 2, 3} |
5.4 symmetric_difference()
或 ^
(对称差集)
返回两个集合中不重复的元素,即两个集合的差集的并集。
1 | set1 = {1, 2, 3} |
5.5 子集与超集
issubset()
:检查一个集合是否是另一个集合的子集。issuperset()
:检查一个集合是否是另一个集合的超集。
1 | set1 = {1, 2, 3} |
5.6 isdisjoint()
检查两个集合是否没有交集(即是否是不相交的)。
1 | set1 = {1, 2, 3} |
6. 集合的应用场景
去重:使用集合可以轻松地去除重复元素。
1
2
3my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list) # 去重
print(my_set) # 输出: {1, 2, 3, 4, 5}数学集合运算:集合可以方便地进行交集、并集、差集等运算。
作为字典的键:由于集合是可变的,它本身不能作为字典的键,但frozenset(冻结集合)是不可变的,可以作为字典的键。
1
2my_dict = {frozenset([1, 2, 3]): "value"}
print(my_dict)集合测试:可以快速检测某个元素是否存在于集合中,利用集合的哈希结构,查找操作的时间复杂度为 O(1)。
7. 总结
特性 | 描述 |
---|---|
无序 | 元素没有固定顺序,不能使用索引 |
不重复 | 集合中的元素不能重复 |
可变 | 集合内容可以修改 |
支持集合运算 | 提供并集、交集、差集等运算 |
基于哈希表 | 查找元素的时间复杂度为 O(1) |
集合在 Python 中非常强大,尤其适合用于去重、快速查找和数学集合运算等场景。通过集合运算,我们可以