7.5、基础数据类型之集合
一、set-集合类型
"""
定义:在{}内用逗号分隔开多个元素,集合具备以下三个特点:
1:每个元素必须是不可变类型
2:集合内没有重复的元素
3:集合内元素无序
"""
s = {1,2,3,4} # 本质 s = set({1,2,3,4})
# 注意1:列表类型是索引对应值,字典是key对应值,均可以取得单个指定的值,而集合类型既没有索引也没有key与值对应,所以无法取得单个的值,而且对于集合来说,主要用于去重与关系元素,根本没有取出单个指定值这种需求。
# 注意2:{}既可以用于定义dict,也可以用于定义集合,但是字典内的元素必须是key:value的格式,现在我们想定义一个空字典和空集合,该如何准确去定义两者?
d = {} # 默认是空字典
s = set() # 这才是定义空集合
# 总结:存多个值,无序,set集合可变,frozenset不可变集合
集合类型的转化
但凡能被for循环的遍历的数据类型都可以传给set()转换成集合类型(强调:遍历出的每一个值都必须为不可变类型)
s = set([1,2,3,4])
s1 = set({'name':'jason',})
print(s)
print(s1)
二、关系运算
先定义一个集合,接下来我们就拿这两个集合为例讲解一下集合的关系运算
python = {'路飞','索隆','山治','娜美','罗宾'}
linux = {'乔巴','乌索普','路飞','索隆','布鲁克'})
1、交集(&)
既求报名Python又报名Linux的学员姓名
print(python & linux)
# 运行结果
{'索隆', '路飞'
2、并集(|)
求所有学生姓名
print(python | linux)
# 运行结果
{'布鲁克', '山治', '路飞', '娜美', '罗宾', '乌索普', '乔巴', '索隆'}
3、差集(-)
求只报名python的学生姓名
print(python - linux)
# 运行结果
{'山治', '罗宾', '娜美'}
4、对称差集(^)
求没有同时报名两门课程的学生
print((python - linux) | (linux - python))
# 或者更简洁
print(python ^ linux)
# 运行结果
{'布鲁克', '山治', '乌索普', '乔巴', '罗宾', '娜美'}
{'布鲁克', '乌索普', '山治', '乔巴', '罗宾', '娜美'}
5、父子集
包含与被包含的关系
s1 = {1,2,3,4,5,6,7,8,90}
s2 = {1,2,3,8,90}
print(s1>s2)
# 运行结果
True

浙公网安备 33010602011771号