集合(Set)是Python中的一种数据结构,其用于存储一组不重复的数据,与列表、元组不同的是,集合中的元素没有顺序,并且每一个元素都是唯一的,不会出现重复的情况。
一、集合的创建
1.1 创建集合
创建集合可以通过直接赋值的方式进行创建也可以像元组或者列表那样通过函数(set())转换的方式进行创建
st = {"a", "d", "c", "e"}
在输出的时候可以看到其中元素的顺序是在发生变化的,并不是按照我们定义时候的顺序进行输出。但是也存在特殊情况(当集合中的元素都是数字的时候会进行排序),例如:
st = {1, 4, 3, 2}
print(st) # 默认升序输出
二、集合操作
2.1 元素获取
集合中的元素获取只能通过遍历的方式进行获取,因为集合是无序的,所以不存在索引。
st = {1, 4, 3, 2}
print(st)
既然集合不存在索引,那么也就意味着集合一单创建之后就无法再修改已存在的元素,只能够添加新的元素到集合中。
2.2 添加新元素
虽然集合中的元素不能修改,但是可以单独添加元素或者批量添加元素到集合当中。
2.2.1 添加单个元素
通过集合对象的add方法进行单个元素的添加
st = {1, 4, 3, 2}
st.add(7)
print(st)
2.2.2 批量添加元素
通过集合对象的update方法进行多个元素的批量添加
st = {1, 4, 3, 2}
st.update([5, 6, 7])
print(st)
添加时要注意update方法中的参数是一个列表。
2.3 删除元素
删除集合中的元素可以使用remove()、discard()、pop()来实现。
2.3.1 remove()
使用remove()方法删除指定元素,如果元素不存在会引发KeyError异常
st = {1, 4, 3, 2}
st.remove(4)
print(st)
2.3.2 discard()
使用discard()方法删除指定元素,如果元素不存在不会引发异常
st = {1, 4, 3, 2}
st.discard(4)
# st.discard(5)
print(st)
2.3.3 pop()
使用pop()方法随机删除并返回一个元素
st = {1, 4, 3, 2}
s = st.pop()
print(st)
print(s)
三、集合运算
3.1 并集
使用union()方法或者|运算符进行并集操作(合并两个集合)
st1 = {1, 4, 3, 2}
st2 = {5, 6, 7}
st = st1.union(st2)
# st = st1 | st2
print(st)
3.2 交集
使用intersection()方法或者&运算符进行交集操作(取出两个集合中的共同元素)
st1 = {1, 4, 3, 2}
st2 = {4, 5, 6, 7}
# st = st1.intersection(st2)
st = st1 & st2
print(st)
3.3 差集
差集:使用difference()方法或者-运算符进行差集操作(取出两个集合中的不同元素)
st1 = {1, 4, 3, 2}
st2 = {4, 5, 6, 7}
# st = st1.difference(st2)
st = st1 - st2
print(st)
四、集合常用方法表
Python 拥有一套能够在集合(set)上使用的内置方法。
方法 | 描述 |
---|---|
add() | 向集合添加元素。 |
clear() | 删除集合中的所有元素。 |
copy() | 返回集合的副本。 |
difference() | 返回包含两个或更多集合之间差异的集合。 |
difference_update() | 删除此集合中也包含在另一个指定集合中的项目。 |
discard() | 删除指定项目。 |
intersection() | 返回为两个其他集合的交集的集合。 |
intersection_update() | 删除此集合中不存在于其他指定集合中的项目。 |
isdisjoint() | 返回两个集合是否有交集。 |
issubset() | 返回另一个集合是否包含此集合。 |
issuperset() | 返回此集合是否包含另一个集合。 |
pop() | 从集合中删除一个元素。 |
remove() | 删除指定元素。 |
symmetric_difference() | 返回具有两组集合的对称差集的集合。 |
symmetric_difference_update() | 插入此集合和另一个集合的对称差集。 |
union() | 返回包含集合并集的集合。 |
update() | 用此集合和其他集合的并集来更新集合。 |