一、集合的定义
集合是python的内置数据结构,和列表、字典一样是一个可变序列。换句话说,集合是没有value的字典。人们通过hash(date)找到date的存储地址。
集合有花括号表示,实例如下:
s={‘python’,‘数据’,90}
特性:
- 无序性
- 不允许存在重复元素
二、集合的创建
- 使用花括号{}创建//不能使用花括号建立空集合
s={'python','数据',90}
- 使用内置函数set()创建
s1=set('python')
s2=set()
s3=set((10,20,30,40))#元组元组转集合
s4=set([10,20,30,40])#列表元组转集合
s4=set({10,20,30,40})#字典元组转集合
三、集合的常见操作
- 集合元素判断是否存在(in和not in)
s={10,20,30,40,50}
print(10 in s)
print(10 not in s)
- 集合元素的增加
实现集合元素的增加有两个方法:add()可实现一次添加一个元素,update()可实现一次添加至少一个元素。
s={10,20,30,40,50}
s.add(90)
print(s)
s.update([60,70,80,90])
print(s)
- 集合元素的删除
实现集合元素的增加有四个方法:remove()可实现一次删除一个指定元素,如果指定元素不存在抛出keyError;discard()可实现一次删除一个指定元素,如果指定元素不存在不抛出异常;pop()可实现一次只删除一个任意元素;clear()可清空集合。
s={10,20,30,40,50,60,70,80,90}
s.remove(80)
s.discard(200)#指定元素不存在不抛出异常
s.pop()
s.clear()
四、集合间的关系
- 两个集合是否相等(==和!=)
s1={30,10,20}
s2={10,20,30}
print(s1==s2)
- 一个集合是否是另一个集合的子集(issubset)
s1={10,20,30,40,50,60}
s2={10,20,30,40}
s3={10,20,30}
print(s2.issubset(s1))
print(s3.issubset(s2))
- 一个集合是否是另一个集合的超集(issuperset)
s1={10,20,30,40,50,60}
s2={10,20,30,40}
s3={10,20,90}
print(s1.issuperset(s2))
print(s2.issuperset(s3))
- 两个集合是否没有交集(isdisjoint)
没有交集返回true。
s1={10,20,30,40,50,60}
s2={10,20,30,40,80,90}
print(s1.isdisjoint(s2))
五、集合的数据操作
- 集合的交集
两个集合的交集就算两个集合相交的部分,在python中通过&和方法intersection()表示,如图:
实例如下:
s1={10,20,30,40,50,60}
s2={10,20,30,40,80,90}
s3=s1&s2
s4=s1.intersection(s2)
- 集合的并集
两个集合的并集包括两个集合所有的元素,在python中通过|和方法union()表示,如图:
实例如下:
s1={10,20,30,40,50,60}
s2={10,20,30,40,80,90}
s3=s1|s2
s4=s1.union(s2)
- 集合的差集
集合的差集就是集合A减去集合B,就相当于集合A减去集合A和B的交集,在python中通过-和方法difference()表示,如图:
实例如下:
s1={10,20,30,40,50,60}
s2={10,20,30,40,80,90}
s3=s1-s2
s4=s1.difference(s2)
- 集合的对称差集
集合的对称差集就是集合A与集合B中所有不属于A∩B的元素的集合,在python中通过^和方法symmetric_difference()表示,如图:
实例如下:
s1={10,20,30,40,50,60}
s2={10,20,30,40,80,90}
s3=s1^s2
s4=s1.symmetric_difference(s2)
笔记心得来源于视频——马士兵Python基础版2020年全新教程和www.runoob.com网页