【Python】10、集合
文章目录
- 1. 集合的简介
- 1.1 集合创建
- 1.2 集合添加
- 1.3 集合删除
- 2. 集合的运算
1. 集合的简介
集合(set)和列表区别如下:
- 集合中只能存储不可变对象
- 集合中存储的对象是无序的(不是按照元素的插入顺序保存)
- 集合中不能出现重复的元素(重复的数据会去重)
1.1 集合创建
- 使用 {x,x} 来创建集合
s = {1,2,3,4,1,1,1,1,21,2,2,2,15,21,0}
print(s,type(s))
# 结果
{0, 1, 2, 3, 4, 21, 15} <class 'set'>
***Repl Closed***
- 创建空集合: s = set()
s = set()
print(s,type(s))
# 结果:
set() <class 'set'>
***Repl Closed***
- 通过set()将序列和字典转化为集合
使用set()将字典转化为集合时,只会包含字典的键
s = set([1,2,3,2,1,5,4])
s2 = set('hello')
s3 = set({'a':1,'b':3,'c':5})
print(s,type(s))
print(s2,type(s2))
print(s3,type(s3))
# 结果:
{1, 2, 3, 4, 5} <class 'set'>
{'l', 'e', 'o', 'h'} <class 'set'>
{'c', 'a', 'b'} <class 'set'>
***Repl Closed***
集合无法通过索引进行操作
- 使用 in 和 not in 检查集合中的元素
- 使用 len() 获取集合中元素个数
1.2 集合添加
- add() 向集合中添加元素
s = set([1,2,3,2,1,5,4])
s.add(7)
print(s,type(s))
# 结果
{1, 2, 3, 4, 5, 7} <class 'set'>
***Repl Closed***
- update() 将一个集合中的元素添加到当前集合中
update()可以传递序列或字典作为参数,字典只会使用键
s = set([1,2,3,2,1,5,4])
s2 = set('world')
s.update(s2)
print(s,type(s))
# 结果:
{1, 2, 3, 4, 5, 'o', 'w', 'r', 'd', 'l'} <class 'set'>
***Repl Closed***
1.3 集合删除
- pop() 随机删除一个集合中的元素
pop() 的返回值是被删除的元素
s = {1,2,3,5,4}
print(s)
s.pop()
print(s)
# 结果
{1, 2, 3, 4, 5}
{2, 3, 4, 5}
***Repl Closed***
- remove(x) 删除集合中指定元素
s = {1,2,3,5,4}
print(s)
s.remove(5)
print(s)
# 结果
{1, 2, 3, 4, 5}
{1, 2, 3, 4}
***Repl Closed***
- clear() 清空集合
s = {1,2,3,5,4}
s.clear()
print(s)
# 结果
set()
***Repl Closed***
- copy() 集合的浅复制
s = {1,2,3,5,4}
s2 = s.copy()
print(s,id(s))
print(s2,id(s2))
# 结果
{1, 2, 3, 4, 5} 1734842045088
{1, 2, 3, 4, 5} 1734842044640
***Repl Closed***
2. 集合的运算
对集合运算时,不会影响原来的集合,而是返回一个运算结果
- & 交集运算
s = {1,2,3,5,4}
s2 = {4,5,7,8,6}
res = s & s2
print(res)
# 结果
{4, 5}
***Repl Closed***
- | 并集运算
s = {1,2,3,5,4}
s2 = {4,5,7,8,6}
res = s | s2
print(res)
# 结果
{1, 2, 3, 4, 5, 6, 7, 8}
***Repl Closed***
- - 差集运算
s - s2,求得是只在s集合中存在的元素
s = {1,2,3,5,4}
s2 = {4,5,7,8,6}
res = s - s2
print(res)
# 结果
{1, 2, 3}
***Repl Closed***
- ^ 异或集运算
s ^ s2 得出的是分别只在s 和 s2集合中独立存在的元素,也就是集合不相交的部分
s = {1,2,3,5,4}
s2 = {4,5,7,8,6}
res = s ^ s2
print(res)
# 结果
{1, 2, 3, 6, 7, 8}
***Repl Closed***
- <= 检查一个集合是否是另一个集合的子集
如果a集合中的元素全部都在b集合中出现,那么a集合就是b集合的子集,b集合是a集合的超集
s = {1,2,3,5,4}
s2 = {1,5,4}
res = s2 <= s
print(res)
# 结果:
True
***Repl Closed***
- < 检查一个集合是否是了另一个集合的真子集
如果超集b中含有子集a中所有元素,并且b中还有a中没有的元素,则b就是a的真超集,a是b的真子集
s = {1,2,3,5,4}
s2 = {1,5,4}
res = s2 < s
print(res)
# 结果
True
***Repl Closed***
- > 检查一个集合是否是另一个集合的真超集
s = {1,2,3,5,4}
s2 = {1,5,4}
res = s > s2
print(res)
# 结果:
True
***Repl Closed***
- >= 检查一个集合是否是另一个集合的超集
s = {1,2,3,5,4}
s2 = {1,5,4}
res = s > s2
print(res)
# 结果:
True
***Repl Closed***