1. 集合的概念和创建
1.1 概念
python中的集合和数学上的集合基本是没有区别的,元素无序且不重复,不可以使用索引访问。
1.2 创建集合
- 方式1:使用花括号{},但其中至少包含一个元素,否则默认创建的是空字典
>>> set1 = {"Hello", "World"}
{"Hello", "World"}
- 方式2:使用 set(),也可以创建空集合
>>> set2 = set('hello')
{'e', 'o', 'h', 'l'} # 集合会去掉重复元素
- 方式3:将列表转换为集合
>>> set3 = set([1,2,3,1,2])
{1, 2, 3}
- 方式4:使用生成列生成列表
>>> set4 = {num for num in range(10) if num % 3 == 0}
{0, 9, 3, 6}
2. 集合的方法
2.1 添加元素
- 方式1:通过 add() 方法为集合添加一个元素,对应于列表的append()
>>> set1 = set()
>>> set1.add(1)
{1}
- 方式2:通过 update() 方法为集合添加多个元素,对应于列表的extend()
>>> set1 = {1, 2}
>>> set1.update({2, 3})
{1, 2, 3}
2.2 删除元素
- 方式1:通过 discard() 方法删除指定元素(集合中没有也不会报错)
>>> set1 = {1, 2, 3}
>>> set1.discard(1)
{2, 3}
- 方式2:通过 remove() 方法删除指定元素(集合中没有会报错)
>>> set1 = {1, 2, 3}
>>> set1.remove(1)
{2, 3}
- 方式3:通过 pop() 方法从集合中随机删除一个元素并返回该元素
>>> set1 = {1, 2, 3}
>>> set1.pop()
1
- 方式4:通过 clear() 方法清空整个集合
>>> set1 = {1, 2, 3}
>>> set1.clear()
set()
2.3 遍历集合
- 集合不支持索引访问
- 集合可以通过for循环遍历
set1 = {1, 2, 3}
for i in set1:
print(i)
3. 集合的运算
集合数据类型的运算包括:成员运算、交集并集差集运算、比较运算等。
3.1 成员运算
- 可以通过成员运算 in 和 not in 判断元素是否在集合中。
- 注意:我们使用集合而不是向量、列表或数组的原因是因为我们反复检查其中是否存在某元素。检查数字是否在集合中需要 O(1) 的时间,而对于其他数据结构,则需要 O(n) 的时间。
3.2 交集运算
- 方式1:使用 & 运算符
set1 & set2
- 方式2:使用 intersection() 方法
set1.intersection(set2)
3.3 并集运算
- 方式1:使用 | 运算符
set1 | set2
- 方式2:使用 union() 方法
set1.union(set2)
3.4 差集运算
- 方式1:使用 - 运算符
set1 - set2
- 方式2:使用 difference() 方法
set1.difference(set2)
3.5 比较运算
- 两个集合可以使用 == 和 != 进行相等性判断
- 两个集合可以使用 < <= > >= 进行子集、真子集等判断