集合(set)
定义:由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key
特性:集合里面数据类型是不可变的
1.可变的数据类型:列表,字典
2、不可变的数据类型:数字、元组、字符串
3、没有重复的元素
集合的各种方法
1 #把列表转换成集合并去重 2 name =['sun',18,'yao','fang','yao'] 3 name_1 = set(name) 4 print(name_1) 5 #输出:{'fang', 'sun', 18, 'yao'}
#定义不可变集合
s = frozenset('1','sun')
不能添加,删除,修改
#在集合中添加元素 name ={'sun',18,'yao','fang'} sun = {'89',18,'fang'} name.add('di') print(name) #输出:{'fang', 18, 'di', 'yao', 'sun'} #清空集合 name ={'sun',18,'yao','fang'} sun = {'89',18,'fang'} name.clear() print(name) #输出:set() #拷贝集合 name ={'sun',18,'yao','fang'} sun = {'89',18,'fang'} test = name.copy() print(test) #输出:{'sun',18,'yao','fang'} #删除 name ={'sun',18,'yao','fang'} sun = {'89',18,'fang'} #name.pop() 随机删除 #name.discard(18)删除没有的值不会报错,显示None ##name.remove() 删除没有的值,会报错 print(name) #输出:{18, 'sun', 'yao'}
#交集(2个集合都有的数据) #并集(2个集合数据的相加去除重复值) #差集(除了2个集合共有的数据,剩下的数据就是差集) #交叉补集(2个集合 加起来之后,除去共有的部分,剩下的就是交叉补集) name ={'sun',18,'yao','fang'} sun = {'89',18,'fang'} #name_1= name.intersection(sun)#交集 print(name&sun)#交集的另外一种方法 #print(name_1) #输出{18, 'fang'} #并集 name ={'sun',18,'yao','fang'} sun = {'89',18,'fang'} print(name.union(sun)) print(name|sun) #另外一种方法 #输出{'yao', 18, 'fang', '89', 'sun'} #差集 name ={'sun',18,'yao','fang'} sun = {'89',18,'fang'} print(name.difference(sun)) print(name-sun)#另外一种方法 print(sun-name) #输出{'yao', 'sun'} #{'yao', 'sun'} #{'89'} #交叉补集 name ={'sun',18,'yao','fang'} sun = {'89',18,'fang'} print(name.symmetric_difference(sun)) print(name^sun)#另一种方法 #输出{'sun', 'yao', '89'} ##如果没有交集,返回True name ={'sun',18,'yao','fang'} sun = {'89',19,'fan'} print(name.isdisjoint(sun)) #输出True #子集 name ={'sun',18,'yao','fang'} sun = {18,'yao','fang'} print(name.issubset(sun)) print(sun.issubset(name)) #输出False /True #父集 name ={'sun',18,'yao','fang'} sun = {18,'yao','fang'} print(name.issuperset(sun)) print(sun.issuperset(name)) #输出True False、 #更新多个值 name ={'sun',18,'yao','fang'} sun = {19,'yao','fan'} sun.update([5,8]) print(sun) #输出{5, 8, 19, 'yao', 'fan'}