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
posted @ 2021-03-21 23:11  黑影Poco  阅读(73)  评论(0)    收藏  举报