集合
- 创建集合
- 集合数据的特点
- 集合的常见操作
1 创建集合
注意:
集合数据特点去重,也就是说集合里面的数据不能是重复的,也就是说不允许有重复数据出现的时候我们就需要往集合里面写入数据
创建集合使用{}
或 set()
,但是如果要创建空集合只能使用 set()
,因为{}
用来创建空字典
# 创建集合
s1 = {10,20,30,40,50}
print(s1)
print(type(s1))
# 这里重复了 4 个 500
s2 = {100,200,300,400,500,500,500,500}
print(s2)
print(type(s2))
# 通过 set() 创建
s3 = set('abcd')
print(s3)
print(type(s3))
# 通过 set() 创建空集合
s4 = set()
print(s4)
print(type(s4))
# 创建空集合但是这里创建的是一个字典,如果不通过 set 的话那就是一个字典
s5 = {}
print(s5)
print(type(s5))
注意:
可以看到数据的展示是无序的,也就是说集合的数据无序是不支持下标的
[15:34:16 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
{40, 10, 50, 20, 30}
<class 'set'>
{100, 200, 300, 400, 500} # 可以看到 500 已经被去重
<class 'set'>
{'b', 'c', 'd', 'a'}
<class 'set'>
set()
<class 'set'>
{}
<class 'dict'>
2 集合的常见操作方法
2.1 增加数据
- add(),add 一次只能够添加一个数据,不支持添加多个数据
# 通过 add()
s1 = {10,20}
s1.add(100)
s1.add(30)
# 添加重复数据
s1.add(10)
print(s1)
# 可以看到重复数据会把 set 的去重特性去掉
[15:39:32 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
{100, 10, 20, 30}
因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有数据的话,则不进行任何操作。
注意:
如果通过 add 函数追加一个序列就会报错
s1 = {10,20}
s1.add([1,2])
print(s1)
[15:44:06 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
Traceback (most recent call last):
File "/root/py-demo/day-1/test.py", line 3, in <module>
s1.add([1,2])
TypeError: unhashable type: 'list' # 不支持追加序列
- update(),追加的数据是序列,也就是说可以一次性添加多个数据
s1 = {10,20}
# 追加下面两个序列
s1.update([100,200])
s1.update('abc')
print(s1)
# 输出可以看到已经追加成功
[15:39:47 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
{100, 'b', 200, 10, 'c', 20, 'a'}
注意:
如果通过 update 函数追加单个数据就会报错
s1 = {10,20}
# 通过 update 追加单个数据
s1.update(102)
print(s1)
[16:00:21 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
Traceback (most recent call last):
File "/root/py-demo/day-1/test.py", line 3, in <module>
s1.update(10)
TypeError: 'int' object is not iterable # 报错不支持 int 类型
2.2 删除数据
- remove():删除集合中的指定数据,如果数据不存在则报错
s1 = {10,20}
s1.remove(10)
print(s1)
# 由于上面已经通过 remove 函数将 10 进行删除,所以这里会报错
s1.remove(10)
print(s1)
[09:08:12 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
{20} # 可以看到这里输出 20 并没有报错
Traceback (most recent call last):
File "/root/py-demo/day-1/test.py", line 7, in <module>
s1.remove(10)
KeyError: 10 # 由于没有 10 所以报错
- discard(),删除集合中的指定数据,如果数据不存在也不会报错
s1 = {10,20}
s1.discard(10)
print(s1)
# 由于上面已经通过 discard 函数将 10 进行删除不报错
s1.discard(10)
print(s1)
[09:40:30 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
{20}
{20}
- pop(),随机删除集合的某个数据,并返回这个数据
s1 = {10,20,30,40}
# 将删除的数据赋值给 del_num 变量
del_num = s1.pop()
# 输出被删除后的集合数据
print(s1)
# 返回删除的数据
print(del_num)
[09:55:50 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
{10, 20, 30}
40 # 将删除的数据输出
2.3 查找数据
- in:判断数据在集合序列
- not in:判断数据不在集合序列
# in 和 not in 判断返回 bool 值
s1 = {10,20,30,40}
# 判断 s1 中是否有 10
print(10 in s1)
# 判断 s1 中是否有 200
print(200 in s1)
# 判断 10 是否不在 s1 中
print(10 not in s1)
# 判断 100 是否不在 s1 中
print(100 not in s1)
[09:56:28 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
True
False
False
True
3 总结
-
创建集合
- 有数据集合
s1 = {数据1,数据2,...}
- 无数据集合
s1 = set()
-
常见操作
- 增加数据
- add()
- update()
- 删除数据
- remove()
- discard()