集合类型set
======================================基本使用======================================
1、用途:I: 关系运算 II:去重
2、定义方式:在{}内用逗号分隔开多个元素,但是元素的特点是
I: 集合内的元素必须是不可变类型
II: 集合内元素无序
III: 集合内元素不能重复
s={1,'aaa',2,} #s=set(...)
print(s,type(s))
s=set()
print(s,type(s))
s={1,1,1,1,1,1,1,1,1,1,1,1,'a','a','a'}
print(s)
数据类型转换
res=set('hello')
print(res)
res=set([1,'a','b'])
print(res)
3、常用操作+内置的方法
优先掌握的操作:
1、长度len
2、成员运算in和not in
pythons={'张铁蛋','李铜淡','王金蛋','赵银胆','alex','kevin'}
linuxs={'oldboy','张铁蛋','赵银胆','alex','wxx'}
3、|合集:求所有报名的学生
print(pythons | linuxs)
print(pythons.union(linuxs))
4、&交集:求同时报名两门课程的学生
print(pythons & linuxs)
5、-差集: 求只报名python课程的学员
print(pythons - linuxs)
print(linuxs - pythons) #求只报名linux课程的学员
6、^对称差集:求没有同时报名两门课程的学生
res=(pythons - linuxs) | (linuxs - pythons)
res=pythons ^ linuxs
print(res)
7、==
s1={1,2,3}
s2={3,2,1}
print(s1 == s2)
注意:父子集描述的是一种包含与被包含的关系
8、父集:>=
9、子集:<=
s1={1,2,3}
s2={1,2,3,4}
print(s2 >= s1)
print(s1 <= s2)
需要掌握的
s1={1,2,3}
s1.update({3,4,5,6})
print(s1)
s1={1,'aa','bb',3}
print(s1.pop())
res=s1.remove('bbbbbb')
print(s1)
print(res)
s1.discard('bbb')
s1.add(4)
print(s1)
======================================该类型总结====================================
存多个值
无序
可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
集合的去重
局限性
1. 只能针对不可变类型
2. 不能保证原来的顺序
names=['egon','egon','egon','alex','alex','kevin']
new_names=list(set(names))
print(new_names)
l=[
{'name':'egon','age':18,'sex':'male'},
{'name':'alex','age':73,'sex':'male'},
{'name':'kevin','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)
hash)