集合(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'}
View Code
#交集(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'}