一、集合(set)
1、定义:不同的元素组成,无序排列的,可哈希的值(存放不可变类型:数字、字符串、元组)
s={1,2,'ww',3,4,5,6,7,8,'ee'}
print (type(s))
print (s)
a=set('ehdjdjjdjfnsdjbfsdjnjksbdjhb')
print (a)
<class 'set'>
{1, 2, 3, 'ww', 4, 5, 6, 7, 8, 'ee'}
{'f', 'k', 'd', 'j', 'e', 's', 'b', 'h', 'n'}
2、集合内置方法
(1)#add 添加
a=set(['里','sb'])
a.add('dddd大傻逼')
a.add('3')
a.add(3)
print (a)
{3, 'sb', '3', 'dddd大傻逼', '里'}
#clear 清空
print (a.clear(),'ww')
# 返回: None
#copy 复制
v=a.copy()
print (v)
#返回:{3, 'sb', '里', '3', 'dddd大傻逼'}
#remove 指定删除(删除不存在的,会报错)
a.remove('3')
print (a)
#返回: {'里', 'dddd大傻逼', 'sb'}
#discard 指定删除(删除不存在的,不会报错)
a.discard('33333333')
print (a)
python=['ww','ee','gg','ee','ere']
linux=['ss','dd','gg','ww']
#集合可以去重,得到的结果是无序的
ps=set(python)
print (ps)
#返回:{'gg', 'ww', 'ere', 'ee'}
#intersection 求交集
ps=set(python)
ls=set(linux)
print (ps,ls)
print (ps.intersection(ls))
print (ps&ls)
#返回:{'ww', 'ere', 'gg', 'ee'} {'ww', 'ss', 'gg', 'dd'}
# {'ww', 'gg'}
# {'ww', 'gg'}
# union 求并集
ps=set(python)
ls=set(linux)
print (ps,ls)
print (ps.union(ls))
print (ps|ls)
#返回:{'ww', 'ere', 'ee', 'gg'} {'sb', 'gg', 'ww', 'dd', 'ss'}
# {'ere', 'sb', 'ee', 'gg', 'ww', 'dd', 'ss'}
# {'ere', 'sb', 'ee', 'gg', 'ww', 'dd', 'ss'}
# # union求差集
ps=set(python)
ls=set(linux)
print (ps-ls)
print (ls-ps)
print (ps.difference(ls))
print (ls.difference(ps))
#:返回:{'ere', 'ee'}
{'ss', 'dd', 'sb'}
{'ere', 'ee'}
{'ss', 'dd', 'sb'}
#交叉补集
ps=set(python)
ls=set(linux)
print (ps.symmetric_difference(ls))
print (ps^ls)
#返回:{'sb', 'dd', 'ee', 'ss', 'ere'}
{'sb', 'dd', 'ee', 'ss', 'ere'}
#如果两个集合没有交集,结果为none,则返回true,有交集则返回False
s1={1,2}
s2={3,4}
print (s1.isdisjoint(s2))
#返回:True
#s1是s2的子集 结果返回true ,s1不是s2的子集 结果返回False
s1={1,2}
s2={1,2,3,4}
print (s1.issubset(s2))
print (s2.issubset(s1))
# 返回:True
False
s1={1,2}
s2={1,2,3,4}
#s1是s2的父集 结果返回true ,s1不是s2的父集 结果返回False
print (s1.issuperset(s2))
print (s2.issuperset(s1))
#返回:False
True
#update 更新,可以更新多个值,而add只能添加一个
s1={1,2}
s2={2,3,4}
s1.update(s2)
s1.update(('22',333),[33333])
print (s1)
#返回:{1, 2, 3, 4, 33333, '22', 333}
#frozenset 不可变集合
s3=frozenset('eeee')
print (s3)