一、集合
简介:
集合是一个无序的,不重复的数据组合,他的主要作用如下
去重,就是把一个列表变成集合就自动去重了
关系测试,测试两组数据之前的交集,差集,对称差集,并集等关系
l = {1,2,3,4,4,5,2}#创建集合则自动去重 print(l) l.add(7)# add 只能添加不可变数据,并且每次只能添加一个值 print(l) l.pop()#pop 随机删除一个值 print(l) l.remove(3)#remove 删除固定的值,如果值不存在则会报错 print(l) l.discard(6)#discard 删除,如果存在直接删除,如果不存在也不会报错 l.update([1,3,4,5,6,7,89]) #updata 可以增加多个值 print(l) l.clear()# clear 清空集合 print(l) s = [1,2,3,4,5,3,2] print(s) s = set(s)#将字符串转换为集合 print(s)
#输出
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5, 7}
{2, 3, 4, 5, 7}
{2, 4, 5, 7}
{1, 2, 3, 4, 5, 6, 7, 89}
set()
[1, 2, 3, 4, 5, 3, 2]
{1, 2, 3, 4, 5}
集合中的元素特性:
- 确定性(元素必须可Hash)
- 互异性(去重)
- 无序性(集合中的元素没有先后之分),如集合{3,4,5} 和 {4,5,3}算作同一个集合。
集合关系测试:
交集,在两个集合里都拥有的元素,叫做交集
apple = {‘jiu‘,‘lin‘,‘liang‘,‘kun‘} banana = {‘jiu‘,‘lin‘,‘zhang‘,‘li‘} print(apple.intersection(banana)) print(apple & (banana)) #简写 #输出 {‘lin‘, ‘jiu‘} {‘lin‘, ‘jiu‘}
差集,在两个集合中,只在其中一个集合的元素
apple = {‘jiu‘,‘lin‘,‘liang‘,‘kun‘} banana = {‘jiu‘,‘lin‘,‘zhang‘,‘li‘} print(apple.difference(banana)) #只买了苹果的人 print(apple - (banana)) #简写 print(banana.difference(apple))#只买了香蕉的人 print(banana - (apple)) #输出 {‘liang‘, ‘kun‘} {‘liang‘, ‘kun‘} {‘li‘, ‘zhang‘} {‘li‘, ‘zhang‘}
并集,将两个集合合并
apple = {‘jiu‘,‘lin‘,‘liang‘,‘kun‘} banana = {‘jiu‘,‘lin‘,‘zhang‘,‘li‘} print(apple.union(banana))#将 apple 和banana 合并 print(apple|(banana)) #简写
对称差集,将两个集合中只单独存在一次的元素,合并在一起
apple = {‘jiu‘,‘lin‘,‘liang‘,‘kun‘} banana = {‘jiu‘,‘lin‘,‘zhang‘,‘li‘} print(apple.symmetric_difference(banana))#只选择了一种水果的人 print(apple^(banana))#简写 #输出 {‘zhang‘, ‘kun‘, ‘liang‘, ‘li‘} {‘zhang‘, ‘kun‘, ‘liang‘, ‘li‘}
包含关系
in,not
in :判断某元素是否在集合内
== , ! =:判断两个集合是否相等
apple = {‘jiu‘,‘lin‘,‘liang‘,‘kun‘} banana = {‘jiu‘,‘lin‘,‘zhang‘,‘li‘} print(‘jiu‘ in (apple))#判断‘jiu’ 是否在apple里反之 not in
print(apple == banana) #判断两个集合是否相等
#输出
True
False
两个集合之间一般有三种关系,相交、包含、不相交,在python中分别用下面的方法判断:
apple = {‘jiu‘,‘lin‘,‘liang‘,‘kun‘} banana = {‘jiu‘,‘lin‘,‘zhang‘,‘li‘,‘liang‘,‘kun‘} print(apple.isdisjoint(banana))#判断两个集合是否不相交 print(apple.issubset(banana))#判断集合是否被其他集合所包含 print(apple <= (banana))# 简写 print(apple.issuperset(banana))#判断集合是否包含其他合集 print(apple >= banana) #简写 #输出 False True True False False