集合

intersection 交叉
union 并集
symmetric 对称
1.集合
集合里面元素不重复,(若重复进行筛选,去重)
集合对象是一组无序排列的可哈希的值:集合成员可以做字典的链接
(1)集合分类:可变集合,不可变集合
可变集合(set):可添加和删除元素,非可哈希的,不能用作字典的键,也不能做其它集合的元素
不可变集合(frozenset):与上一层相反
#集合的创建
# a = (1,2,3)#列表
# b = list([4,5,6])#元组
# print(a)
# print(b)
s=set('alex li')
s1=['alvin','ee','alvin']
print(s)#{'e','x','a','d'}
s2=set(s1)
print(s1)
print(s2)
(2)非可哈希的不能作为字典的键
(哈希:字典里面可以作为键的)
(3)集合判断
li=[2,3,'eric']
s=set(li)
print(s)
#d={s:'123'} 报错unhashable type:'set'
print(2 in s)#判断2是否在s里面,在就输出true
print(4 in s)#判断4是否在s里面,不在就输出false
(4)集合更新
update与add区别:add把元素作为一个元素添加,update是把元素作为序列添加
#add
li=[2,3,'eric']
s=set(li)
s.add('uu')#添加一个元素
print(s)
#update
wi=[4,5,'eric']
s=set(wi)
s.update('oop')#set去重所以只有一个o
s.update('oqw')#把元素拆分字符后更新输出
print(s)

wi=[4,5,'eric']
s=set(wi)
s.update([12,"alex"])#若出现重复元素会去重
print(s)
(5)删除
.reonve()
.pop():随机删除
(6)清空
.clear:清空
(7)删除
del:绝对删除
2.集合类型操作符
(1)in ,not in
(2)集合等价与不等价(==,!=)
print(set('alex')==set('alexexex'))#返回值true
print(set('alex')!=set('alexexex'))#返回值false
(3)子集、超集
print(set('alex')<set('alexexex'))#返回值true<:判断父子集包含关系
print(set('alex')<set('alex'))#返回值false 相等不包含
(4)联合
print(set('alex') or set('alexw'))#交集,取共有的
print(set('alex') and set('alexw'))#并集,去所有不重复
4.关系测试
set 重点
a = set([1,2,3,4,5])
b = set([4,5,6,7,8])
交集 a = t & s
print(a.intersection(b))
print(a&b)
并集 a = t | s
print(a.union(b))
print(a|b)
差集
print(a.difference(b)) #{1,2,3}in a but not in b
print(a-b)
print(b.difference(a)) #{8,7,6}in b but not in a
print(b-a)
对称差集
print(a.symmetric_difference(b))# symmetric = 对称 差集,反向交集
print(a^b)
父集 超集
print(a.issuperset(b))#父集 a > b
print(a.issubset(b))#子集 a < b
posted @ 2019-01-09 23:01  HashFlag  阅读(178)  评论(0)    收藏  举报