关于集合set
Posted 行走的cd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于集合set相关的知识,希望对你有一定的参考价值。
把不同的元素组成一起形成集合
0.集合的主要作用:
(1)去重, 把一个列表变成集合,就自动去重了
(2)关系测试,测试两组数据之间的交集,并集,差集等关系
1.如何创建一个集合
集合的创建方法只有一种,如:
a=set([1,2,3])
b=frozenset(‘tony‘)
set()函数内部只能包含一个对象,这个对象所包含的值必须是可哈希的,即不可变类型(整型,字符串,元组,frozenset),不可以c=set([[1,2],5,‘tony‘]),会报错。同时set是不可哈希的,frozenset是可哈希的,但是内部元素都必须是可哈希的
一个集合内部的元素不可以是重复的,所以当把一个序列变为集合时,set()函数会去除重复的元素
a=[1,2,3] b=set(a) print(b)#输出{1,2,3} c=[1,2,3,1] d=set(c) print(d)#输出{1,2,3}
2.集合的分类
可变集合(set):可以添加和删除元素,是非可哈希的,不能用作字典的键,也不能做其他集合的元素
不可变集合(frozenset):与上面相反
这两个集合的关系就像列表和元组的关系
3.访问集合
由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。
s=set(‘chen‘) print(‘c‘ in s)#输出True print(‘a‘ in s)#输出False
s=set(‘chen‘) for i in s: print(i)
#输出
h
n
c
e
4.更新集合
可使用以下方法来更新集合:
s.add()
s.update()
s.remove()
s.pop()
s.clear()
s=set([1,2,3,4]) s.add(‘chen‘) print(s)#输出{1, 2, 3, 4, ‘chen‘} s.update(‘tony‘) print(s)#输出{1, 2, 3, 4, ‘y‘, ‘n‘, ‘chen‘, ‘o‘, ‘t‘}
s.remove(‘chen‘) print(s)#输出{1, 2, 3, 4, ‘y‘, ‘n‘, ‘o‘, ‘t‘} a=s.pop() print(s,a)#输出{2, 3, 4, ‘y‘, ‘n‘, ‘o‘, ‘t‘} 1
s.clear()
print(s)#输出set()
5.集合类型操作符
1 in ,not in
2 集合等价与不等价(==, !=)
3 关系测试,测试两组数据之间的交集(&),并集(|),差集(-),对称差集(^),超集(>),子集(<)等关系
a=set([1,2,3,4,5]) b=set([4,5,6,7,8]) #交集(属于a,也属于b) print(a.intersection(b)) print(a&b)#{4, 5} #并集(属于a,或属于b) print(a.union(b)) print(a|b)#{1, 2, 3, 4, 5, 6, 7, 8} #差集(属于一个集合但不属于另一个集合) print(a.difference(b)) print(a-b)#{1, 2, 3} print(b.difference(a)) print(b-a)#{8, 6, 7} #对称差集(也称为反向交集)(除去两个集合共有的元素之后形成的集合) print(a.symmetric_difference(b)) print(a^b)#{1, 2, 3, 6, 7, 8} a=set([1,2,3,4,5]) b=set([1,2,3,4,5]) #超集(a是否完全包含b) print(a.issuperset(b))#True print(a>b)#False print(a>=b)#True #子集(b是否完全被a包含) print(b.issubset(a))#True print(b<a)#False print(b<=a)#True
以上是关于关于集合set的主要内容,如果未能解决你的问题,请参考以下文章