一、首先按照以下几个点展开对集合的学习
#一:基本使用
1 、用途
2 、定义方式
3 、常用操作+内置的方法
#二:该类型总结
1、 存一个值or存多个值 只能存一个值 可以存多个值,值都可以是什么类型
2 、有序or无序
3 、可变or不可变 !!!可变:值变,id不变。可变==不可hash !!!不可变:值变,id就变。不可变==可hash
二、集合
#作用:去重,关系运算,
# 知识点回顾 可变类型是不可hash类型 不可变类型是可hash类型
#定义集合:
集合:可以包含多个元素,用逗号分割,
集合的元素遵循三个原则:
1:每个元素必须是不可变类型(可hash,可作为字典的key)
2: 没有重复的元素
3:无序
注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值
#优先掌握的操作:
#1、长度len
#2、成员运算in和not in
#3、&交集
stus_linux={'alex','egon','张全蛋','李铁蛋','oldboy'}
stus_python={'李二丫','wxx','liudehua','alex','egon'}
#既报名linux又报名python的学生:交集
print(stus_linux & stus_python)
print(stus_linux.intersection(stus_python))
# 值都是 {'alex', 'egon'}
#4、|合集
stus_linux={'alex','egon','张全蛋','李铁蛋','oldboy'}
stus_python={'李二丫','wxx','liudehua','alex','egon'}
#所有的学生:并集
print(stus_linux | stus_python)
print(stus_linux.union(stus_python))
#值都是
#{'oldboy', 'egon', 'liudehua', '张全蛋', '李二丫', 'wxx', 'alex', '李铁蛋'}
#5、-差集
stus_linux={'alex','egon','张全蛋','李铁蛋','oldboy'}
stus_python={'李二丫','wxx','liudehua','alex','egon'}
#只报名linux,没有报名python的:差集
print(stus_linux - stus_python)
print(stus_linux.difference(stus_python))
#值为 {'oldboy', '李铁蛋', '张全蛋'}
#只报名python,没有报名linux的:差集
print(stus_python - stus_linux)
print(stus_python.difference(stus_linux))
#值为{'liudehua', '李二丫', 'wxx'}
#6、^对称差集
stus_linux={'alex','egon','张全蛋','李铁蛋','oldboy'}
stus_python={'李二丫','wxx','liudehua','alex','egon'}
# 没有同时报名两门课程的学生姓名:交叉补集
print(stus_linux ^ stus_python)
print(stus_linux.symmetric_difference(stus_python))
#值都为 {'李铁蛋', '李二丫', 'oldboy', 'liudehua', '张全蛋', 'wxx'}
#7、查看
s1={1,'a','b','c','d'}
for item in s1:
print(item)
#值的排序是随机的是上面五个元素的随机排序
#8、增加
s1={'a','b','c'}
s1.add('d') # 一次添加一个值
s1.add(4)
print(s1)
#值为{'a','b','c','d'}
s1.update({3,4,5}) #一次添加多个值
print(s1)
#值为{'a','b','c','d',3,4,5} 这里元素的顺序都是随机的
#9、删除
s1={'a','b','c'}
#s1.discard() ## 当删除的元素不存在的时候,不会报错
s1.discard(4)
print(s1) #值为{'a','b','c'}
#s1.remove() # 当删除的元素不存在的时候,报错
s1.remove(4) #报错
s1.pop() #随机取走一个元素
res=s1.pop()
print(res) #值是随机的
#10、父集,子集:
#父集:爹包含儿子
# s1={1,2,3}
# s2={1,2}
s1 > s2# 代表s1包含s2,s1是s2父集
s2 < s1 # s2是s1子集