python3:序列_集合(常用基础知识)

'''
集合用于保存不重复元素,有可变集合(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',因为列表不可哈希的,元组可哈希。
原文地址:https://www.cnblogs.com/jxba/p/9872504.html