一、集合类型
1.作用:也是用来存多个值,但是集合主要用于:去重、关系运算
2.定义:在{}内用逗号分隔开多个元素,多个元素满足以下三个条件
1.集合元素必须为不可变类型 2.集合内元素无序 3.集合内元素没有重复
s={1,2,3,4} #本质 s=set({1,2,3,4})
s={} #默认为空字典
定义空集合
s=set()
3.类型转换
s=set([1,2,3,4]) #转换列表 print(s) #打印结果为 {1, 2, 3, 4} s=set((5,6,7,8]) #转换元组 print(s) #打印结果为 {5, 6, 7,8} s=set({'name':'malin'}) #转换字典 print(s) #打印结果为 {'name'} s=set('malin') #转换字符串 print(s) #打印结果为 {'m','a','l','i','n'}
关系运算
4、内置方法
friends1={'egon','malin','a','b'} #定义两个集合一个用户一的朋友们
friends2={'egon','malin','c','d'} #一个用户二的朋友们
4.1取交集:两者共同的好友(有用 $ 或 .intersection()两种方式)
print(friends1 & friends2) #第一种方式 print(friends1.intersection(feiends2)) #第二种
4.2取并集/合集:两者所有的好友(有用 | 或 .union()两种方式)
print(friends1 | friends2) print(friends1.union(friends2))
4.3取差集:取friends1独有的好友(有用 - 或 .difference()两种方式)
print(friends1 - friends2) print(friends1.difference(friends2))
4.4对称差集:取两个用户独有的好友们(有用 ^ 或 .symmetric_difference()两种方式)
print(friends1 ^ friends2) print(friends1.symmetric_difference(friends2))
4.5父子集:包含的关系
当他们相等或者能完全包含另外一个就算是父子集
s1={1,2,3} s2={1,2,3} #互为父子 print(s1=s2) #返回True s1={1,2,3} s2={1,2} #s1大于s2并且完全包含了s2可以称s1为父s2为子 print(s1>s2) #返回True print(s1.issuperset(s2)) #判断s1是否完全包含s2(父集)是返回Trut否则返回False print(s2.issubset(s1)) #判断s2是否完全被包含在s1里面(子集)是返回True否则返回False
不存在包含关系,下面的比较均为False
s1={1,2,3} s2={1,2,4} print(s1<s2) print(s2>s1)
去重
1、只能针对不可变类型去重
2、无法保证原来的顺序
例如: l=['a','c','a',1,3,1,'b',2,5,'g'] print(set(l)) #打印结果为{1, 2, 3, 5, 'b', 'g', 'a', 'c'}
所以针对不可变类型去重要保留顺序,就需要我们通过循环的方式去重。
l=['a','c','a',1,3,1,'b',2,5,'g'] l1=[] for i in l: if i not in l1: l1.append(i) print(l1) l2=[ {'name':'lili','age':18,'sex':'male'}, {'name':'jack','age':73,'sex':'male'}, {'name':'tom','age':20,'sex':'female'}, {'name':'lili','age':18,'sex':'male'}, {'name':'lili','age':18,'sex':'male'}, ] l3=[] for j in l2: if j not in l3: l3.append(j) print(l3)
需要掌握
s={1,2,3,4,5,6,}
1、s.discard(7) #删除元素,不存在不会报错
2、s.update({1,3,5,7,9,'a','b') #更新字典,添加没有的值
3、s.pop() #随机删除
4、s.add(4) #添加值
其他内置方法
s={1,2,3,4,5,6,}
1、s.remove(7) #删除元素,不存在会报错
2、s.isdisjoint() #两个集合完全独立,没有共同部分返回True
来源:https://www.cnblogs.com/marin0817/p/12482011.html