1、集合可以去重
>>>l = [1, 1, 2, 2, 3]
>>>set(l)
>>>{1, 2, 3}
>>>list(set(l))
>>>[1, 2, 3]
2、集合的中缀运算符(以集合A和B为例)
- | 运算符 ,A | B,返回A与B的合集,
- &运算符,A & B,返回A与B的交集
- -运算符,A - B, 返回A与B的差集
- ^运算符,A ^ B,返回A与B的对称差集(A,B中不属于A交B的元素集合)
各种运算符都有相应原地更新操作,如|=、&=、-=、^=
3、集合字面量
除了空集,集合的字面量可以写成{…}的形式,如:
>>>s = {1, 2, 3}
>>>type(s)
<class 'set'>
但若想创建一个空集,则必须用set()方法,如果写成{},则创建的是一个空字典。
s = set()
4、集合的比较运算符
e in s #判断e是否属于s
s <= z #判断s是否为z的子集
s < z #判断s是否为z的真子集
s >= z #判断s是否为z的父集
s > z #判断s是否为z的真父集
5、集合set方法
s.add(e) #把元素e添加到s中
s.clear() #移除s所有元素
s.copy() #对s浅复制
s.discard(e) #如果s中有e则把它移除
s.remove(e) #移除e,若集合没有则抛出KeyError异常
s.pop() #随机移除一个元素,并返回其值
s.__len__() #len(s)
s.__iter__() #返回s的迭代器
6、集合的实现及导致的结果
集合的实现依赖于散列表,因此有一些特点如下:
- 集合里的元素必须是可散列的
- 集合很消耗内存(散列表的特性,空间换时间)
- 可以很高效的判断元素是否存在于某个集合
- 元素的次序取决于被添加到集合里的次序
- 往集合里添加元素,可能会改变集合里已有元素的次序