集合
特点:是一个无序的,不重复的数据组合
作用:(1)去重,把一个列表变成集合,就自动去重了
(2)关系测试,测试两组数据之前的交集、差集、并集等关系
语法:s = {} #当为空时,为字典类型
s = {1} #为集合类型。
type(s) #返回<type 'set'>
把别的数据类型(元组、列表)直接转为集合
s = [1,2,3,4,5,3,2]
set(s)
结果:set([1,2,3,4,5])
增:s.add(2)#相同的添加不进去,只能添加一个
s.add(6)#不同的数据直接添加
help(s.update)#查看用法
s.update([1,3,4,5])#可以添加多个值,s.add()只能添加一个值
删:s.remove(6)#删除6,如果没有删除的值会报错
s.discard(6)#删除6,如果没有删除的值不报错
s.pop()#随机删除值,要数据量足够大
s.clear#清空
集合的关系测试:
iphone7 = {'rain','jack','lucy','lili'}
iphone8 = {'rain','lilei','shanshan','lucy'}
1、交集 >>>iphone7.intersection(iphone8)
{'rain','lucy'}
>>>iphone7 & iphone8
{'rain','lucy'}
2、差集 >>>iphone7.difference(iphone8)#只买了iphone7没买iphone8的人
{'jack','lili'}
>>>iphone7 - iphone8#只买了iphone7没买iphone8的人
{'jack','lili'}
>>>iphone8.difference(iphone7)#只买了iphone8没买iphone7的人
{'lilei','shanshan'}
>>>iphone8 - iphone7#只买了iphone8没买iphone7的人
{'lilei','shanshan'}
3、并集 >>>iphone8.union(iphone7)
{'rain','jack','lucy','lili','lilei','shanshan'}
>>>iphone8 | iphone7
{'rain','jack','lucy','lili','lilei','shanshan'}
4、对称差集:不交集的部分(只买了iphone7 or iphone8的人)
>>>iphone7.symmetric_difference(iphone8)
{'jack','lili','lilei','shanshan'}
>>>iphone7 ^ iphone8
{'jack','lili','lilei','shanshan'}
包含关系:in,not in:判断某元素是否在集合内 = = ,!=:判断两个集合是否相等
两个集合之间一般有三种关系,相交,包含,不相交。在python中分别用下面的方法判断:
(1)判断两上集合是不是不相交:set.isdisjoint(s);
(2)判断集合是不是包含其他集合,等同于a>=b;set.issuperset(s)
(3)判断集合是不是被其他集合包含,等同于a<=b:set.issubset(s)