[基本数据类型------>>集合类型]
[基本数据类型------>>集合类型]
集合、list、tuple、dict一样都可以存放多个值,但是集合主要用于:去重、关系运算
定义:
在{}内用逗号隔开多个元素,需要注意的是集合内的元素必须满足
1、集合内的元素必须是不可变类型
2、集合内元素无序
3、集合内元素没有重复
1、用途
(1):关系运算
1、交集: 求即报名pythons又报名Linux的学生:
# pythons = {'egon','tom','王八蛋','李七蛋 '}
# Linuxs = {'egon','tom','lili','jake'}
# print(pythons & Linuxs)
# # 结果{'egon', 'tom'}
2、并集:求所有学生姓名
# pythons = {'egon','tom','王八蛋','李七蛋 '}
# Linuxs = {'egon','tom','lili','jake'}
# print(pythons | Linuxs)
3、差集:求只报名pythons的学员:
# pythons = {'egon','tom','王八蛋','李七蛋 '}
# Linuxs = {'egon','tom','lili','jake'}
# print(pythons - Linuxs)
4、对称差集:求没有同时报名两门课程的人
# pythons = {'egon','tom','王八蛋','李七蛋 '}
# Linuxs = {'egon','tom','lili','jake'}
# print((pythons - Linuxs) | (Linuxs - pythons))
# print(pythons ^ Linuxs)
# # 结果:{'jake', '王八蛋', 'lili', '李七蛋 '}
# # {'jake', 'lili', '王八蛋', '李七蛋 '}
5、父子集
父集:>=
子集:<=
l1 = {1,2,3}
# l2 = {1,2}
# print(l1 >= l2) # True 、证明l1是l2的父集 l1包含l2
# print(l1 <= l2) #False 如果等于证明互相为对方的父子集
定义空集合 s = set()
集合去重复有局限性
# 1. 只能针对不可变类型
# 2. 集合本身是无序的,去重之后无法保留原来的顺序
set 去重
python = ['a','b',1,'a','a']
# print(set(python)) #set去重
去重主流:
l = [{'name':'egon1','age':'18','gender':'male'},
# {'name':'egon2','age':'19','gender':'female'},
# {'name':'egon3','age':'89','gender':'female'},
# {'name':'egon1','age':'18','gender':'male'},
# {'name':'egon1','age':'18','gender':'male'},
# ]
# nuw = []
# for info in l:
# if info not in nuw:
# nuw.append(info)
# print(nuw)
# l= []
# pythons = {'egon','tom','王八蛋','李七蛋 '}
# Linuxs = {'egon','tom','lili','jake'}
# for x in pythons:
# if x in Linuxs:
# l.append(x)
# print(l)
类型转换
# 但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()转换成集合类型
>>> s = set([1,2,3,4])
>>> s1 = set((1,2,3,4))
>>> s2 = set({'name':'jason',})
>>> s3 = set('egon')
>>> s,s1,s2,s3
{1, 2, 3, 4} {1, 2, 3, 4} {'name'} {'e', 'o', 'g', 'n'}

浙公网安备 33010602011771号