集合的定义
集合这个概念我们并不陌生,在学生时代不免会有老师对全班同学喊集合,在数学学习中我们也可以学到集合。
集合具有互斥性和无序性,意思就是集合里每个元素都是不一样的,而且集合也是无序的。回想一下之前还学过哪个类型也是无序的呢?对了就是字典!
set1 = {8, 7, 4, 5, 6} # 集合与字典一样都是用{}定义,但集合不存在键值和值成对出现。
print(set1) # {4, 5, 6, 7, 8}
这里会有个疑问,为什么我定义的时候是8开头,而输出的时候却是从小到大的,集合不应该是无序的吗。其实这是因为python3版本在输出值较小的集合时会自动从小到大输出,而遇到大值的时候就不会了。
set1 = {9991, 9880, 12, 15}
print(set1) # {9880, 12, 15, 9991}
如何定义空集合呢?要注意set1 = {}定义的是空字典而不是空集合。所以我们可以用set函数来构造空集合。
set1 = set()
print(type(set1)) # <class 'set'>
集合的运算
在数学中我们了解到集合具有交,并,差等集合运算。同样的在python里也存在这些运算。
set1 = {2, 3, 5, 7, 11}
set2 = {1, 3, 5, 7, 9}
1.集合的交集
我们使用&为集合的交集运算。
A&B交集:元素在集合A里,也在集合B里。
set3 = set1 & set2
print(set3) # {3, 5, 7}
2.集合的并集
|为集合的并集运算。
A|B并集:元素在集合A里或者在集合B里。
set3 = set1 | set2
print(set3) # {1, 2, 3, 5, 7, 9, 11}
3.集合的差集
-为集合的差集运算。
A-B差集:元素在集合A里但不在集合B里。
set3 = set1 - set2
print(set3) # {2, 11}
集合的增删
1.集合的增加
集合可以通过add函数单个添加元素,和update函数批量添加元素。需要注意的是update函数必须用可迭代的对象(如:字符串,列表,集合等)来批量添加元素。当然已经存在的元素就不会再添加了。
add函数仅在集合中有哦。
set1 = {2, 3, 5}
set1.add(7)
print(set1) # {2, 3, 5, 7}
set1.update({11, 13, 17})
print(set1) # {17, 2, 3, 5, 7, 11, 13}
2.集合的删除
还是我们熟悉pop函数和remove函数,想想这两个函数在哪里也出现过?
诶对了列表的删除里也有他们!在集合中pop是随机删除,remove是指定元素删除。
set1 = {2, 3, 5, 7, 9}
print(set1.pop()) # 2
print(set1) # {3, 5, 7, 9}
set1.remove(9)
print(set1) # {3, 5, 7}
但是remove函数在删除不存在的元素时会出现报错,于是就有英雄诞生了,他就是小哪吒!啊不是,他就是discard函数!!
set1.remove(9) # 报错
set1.discard(9) # 不会报错
清空和删除集合,删除后该变量就不存在了后续在引用就会报错,只能重新定义。
set1.clear() # 清空集合
print(set1) # set()
del set1 # 删除集合
3.集合的改和查
集合是无序的,其不存在下标,没有修改方法,硬是要修改可以通过删除和添加的方法实现。显然没有下标他也不能进行值的查找。好在他是可迭代类型可以用for循环迭代得到他的全部元素。
可能有同学就疑问那集合还有什么用呢?
举个栗子:给一个列表删除其重复的元素。那么他就可以通过强制类型转换转为集合,再转成列表来实现去重。
集合的判断
判断集合是否有交集用isdisjoint函数,有交集则返回False。
set1 = {1, 3, 5, 7}
set2 = {1, 3, 5, 7, 9}
print(set1.isdisjoint(set2)) # False
判断集合是否是另一个集合的子集用issubset函数,是则返回True。
print(set1.issubset(set2)) # True
判断集合是否是另一个集合的超集用issuperset函数,是则返回True。简单来说就是是否包含于另一个集合。
print(set1.issuperset(set2)) # False
结束语
这次托更挺久了,主要是因为最近课业比较繁重,作业量比较多,不过还是挤时间更新了集合学习。
喜欢的话可以点赞转发加关注支持一下,后续会更新其他python学习内容。
ps:现在关注我,以后就是老粉啦!!!
下篇预告
之前经常讲到pop函数,remove函数,是不是有个疑惑什么是函数呢,期待下一篇。