pythons=['六三','print','abc','zx','zs','lg','']
linuxs=['oldboy','张三','李四','王五','lg','zx']
l=[]#定义空列表 将报名两个相同课程的人筛选出来
for stu in pythons:
if stu in linuxs
l.append(stu)
print(l)#找到两个相同的部分
1.什么是集合
在{}内用逗号分隔开多个值,集合的特点
1.每个值必须是不可变类型
2.集合无序
3.集合内元素不能重复
2.为什么要集合
1.用于做关系运算
2.去重 性质非常多 应用非常窄
3.怎么用集合
s={1,1.3,'aa',[1,2,3]}#集合内不能放列表 因为集合内不能放可变类型 所以不能放列表【】
s={1,1.3,'aa'}
print(s)
s={1,1,1,1,1,1,1,2}
print(s)#只能输出1和2两个数字
d={'x':1,'x':2,'x':3}
print(d)#字典中不可重复定义 重复定义输出最后的值
res=set('hello')
print(res) 集合去重 输出结果为 {'o', 'l', 'h', 'e'}
res=set([1,2,])
print(res)#1 2
res=set([1,2,['a','b']])#不能把列表加到集合中去 因为集合内不能放可变类型
print(res)
集合的第一大用途:关系运算
pythons={'六三','print','abc','zx','zs','lg',''}
linuxs={'oldboy','张三','李四','王五','lg','zx'}
1.求同时报名两门课程的学生姓名:交集
print(pythons&linuxs)
print(pythons.intersection(linuxs))
pythons=pythons.intersection(linuxs)
pythons.intersection_update(linuxs)
print(pythons)
2.求报名两门课程所有同学的姓名:并集
print(pythons|linuxs)#同时存在就进行去重
print(pythons.union(linuxs))
3.求只报名python课程的学生:差集
print(pythons-linuxs)
print(pythons.difference(linuxs))
只报名Linux课程的学生
print(linuxs-pythons)
print(linuxs.difference(pythons))
4.求没有同时报名两门课程的学生姓名:对称差集
print((pythons-linuxs)|(linuxs-pythons))
print(pythons^linuxs)
print(pythons.symmetric_difference(linuxs))
5.父子集
s1={1,2,3}
s2={1,2}
print(s1 > s2) >代表s1是包含s2的 称之为s1为的父集返回true
print(s2 < s1)
print(s1 >= s2)
print(s1.issuperset(s2))
print(s2.issuperset(s1))
s1={1,2,3}
s1.update({3,4,5})
print(s1)
s1.pop()#随机删一个值
s1.remove(2) 删除2 如果元素不存在会报错
print(id(s1))
s1.add(4)
print(s1)
print(id(s1))
id没变值变了集合是可变类型
s1.discard(3)删除3 如果元素不存在 就不做任何事
s1={1,2,3}
s2={4,5}
print(s1.isdisjoint(s2)) s1和s2有交集返回false s1和s2没有交集返回true
s3={1,2,3}
s4={3,2,1}
print(s3==s4)
s5={1,2,3}
s6={1,2,3}
print(s5 >= s6)
print(s5 <= s6)
互为父子集
#集合的第二大用途:去重
集合去重的局限性
1.会打乱原值的顺序
2.只针对不可变去重
stus=['egon','lgl','lx','alex','alex','zx']
res=set(stus)
print(res)
list(res)
print(res)
old_l=[1,[1,2],[1,2]]
res=set(old_l)#不可去重
print(res)
l=[
{'name':'egon','age':18,'sex':'male'},
{'name':'alex','age':73,'sex':'male'},
{'name':'egon','age':20,'sex':'female'},
{'name':'egon','age':18,'sex':'male'},
{'name':'egon','age':18,'sex':'male'},
]
new_l=[]
for dic in l:
if dic not in new_l:
new_l.append(dic)
print(new_l)
#======================================该类型总结===
存多个值
无序
可变
按存值个数区分
标量/原子类型 数字,字符串
容器类型 列表,元组,字典
按可变不可变区分
可变 列表,字典
不可变 数字,字符串,元组
按访问顺序区分
直接访问 数字
顺序访问(序列类型) 字符串,列表,元组
key值访问(映射类型) 字典