[基本数据类型------>>集合类型]

[基本数据类型------>>集合类型]

集合、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'}
posted @ 2021-03-22 12:18  刘较瘦丫  阅读(21)  评论(0)    收藏  举报