''' 集合用于保存不重复元素,有可变集合(set)和不可变集合(frozenset) 集合最好的应用是去掉重复元素,因为集合中的每个元素都是唯一的。 本篇只汇总set的基础信息 set集合也是无序的,所以输出和创建的顺序可能不一样 ''' # 创建集合 print('空集合:',set()) s1 = {'1集合创建','2','3aaa'} print(s1) s2 = set('字符串创建集合') print('字符串转为集合:',s2) s3 = set(['列表','测试','创','建','集','合']) print('列表转为集合:',s3) s4 = set(('元组','测试','创建','集合')) print('元组转为集合:',s4) aa = set(range(1,11,2)) #创建随机数集合 print(aa) #添加元素 s1.add('添加') print('s1空集合添加元素',s1) #删除元素 s2.remove('创') print('remove 删除指定元素后:',s2) print('pop随机删除的元素:',s2.pop(),' pop随机删除元素后:',s2) #清空元素 s1.clear() print('s1清空后',s1) # 集合的交集 print('集合的交集:',s2 & s3) #同时存在于二者的元素 # 集合的并集 print('集合的并集:',s2 | s3) #二者中所有的元素,去重显示 # 集合的差集 print('集合的差集:',s2 - s3) #存在于前者不存在于后者的元素 #检查集合成员 print('集' in s2) #in 在,not in 不在 print('合' in s2) #in 在,not in 不在 #序列长度、最大值、最小值;%d数字替代符,n换行符 print("序列长度:%d 序列最大值:%r 序列最小值:%r" %(len(aa),max(aa),min(aa))) #除了对元素的顺序和内容不可添加、修改、删除外,集合有很多同列表一样的功能 #遍历集合 print('遍历集合:') for item in aa: print(item) shuzi = (128,512,309) daihao = ['SY','JX','JN'] jiancheng = ['SY','JX','JN','SP','TX'] xingzuo = ['双鱼','巨蟹','金牛','水瓶','天蝎'] #创建集合 di11 = set(zip(shuzi,daihao)) #生成集合 di12 = set(zip(jiancheng,xingzuo)) #生成集合, print('di11:',di11) print('di12:',di12) dd1 = set(zip(shuzi,daihao)) #生成:数字、代号集合 dd2 = set(zip(jiancheng,xingzuo)) # 生成:代号、星座集合 print('dd1:',dd1) print('dd2:',dd2) #集合推导式:(用列表创建的表达式依然可成功创建,******注意:记得加上set()******)、、 dd11 = {j for j in zip(shuzi,daihao)} #用推导式生成 print('dd11',dd11) #生成指定范围的数值集合 import random d = {random.randint(11,20)*2 for i in range(1,7)} #random.randint(30,90)*2:元素表达式,i:针对后面range的循环变量 print('d:',d) #生成指定需求的集合,如d的5折 e = {int(x*0.5) for x in d} #x*0.5:元素表达式;x:d中的元素,i的长度为d的长度 print('e:',e) #生成符合条件的集合,如f集合需要0.5的d元素,且0.5d元素依然为偶数 f = {int(x*0.5) for x in d if int(x*0.5)%2==0} #x*0.5:元素表达式;x:d中的元素 i的长度为符合条件的列表的长度,也可以写为元组 len(tuple(int(x*0.5) for x in d)) print('f:',f) #二维集合 #使用推导式创建二维集合(用列表创建的表达式依然可成功创建) g1 = {tuple(random.randint(3,8) for j in range(4)) for i in range(1,4)} print('g1',g1) g2 = set(tuple(random.randint(3,8) for j in range(4)) for i in range(1,4)) print('g2',g2) # g3 = {[random.randint(3,8) for j in range(3)] for i in range(1,4)} # print(g3) #失败,提示:TypeError: unhashable type: 'list',因为列表不可哈希的,元组可哈希。