1.集合论
集合的本质是许多唯一对象的聚集,因此,集合可以用来去重。集合中的元素必须是可散列的,set类型本身是不可以散列的,但是frozenset是可以的。所以,可以创建包含不同frozenset的set。
l = ['spam', 'eggs', 'spam']
print(set(l))
found = len(set(needles)&set(haystack))
集合中可以使用的基础运算符(以下的运算符要求两侧的对象必须是集合类型):
运算符 | 方法 | 描述 |
s&z | s._and_(z) | s和z的交集 |
z&s | s._rand_(z) | 反向&操作 |
s&=z | s._iand_(z) | 把s更新为s和z的交集 |
s|z | s._or_(z) | s和z的并集 |
z|s | s._ror_(z) | 反向|操作 |
s|=z | s._ior_(z) | 把s更新为s和z的并集 |
s-z | s._sub_(z) | s和z的差集 |
z-s | s._rsub_(z) | 反向-操作 |
s-=z | s._isub_(z) | 把s更新为s和z的差集 |
s^z | s._xor_(z) | s和z的对称差集 |
z^s | s._rxor_(z) | 反向^操作 |
s^=z | s._ixor_(z) | 把s更新为s和z的对称差集 |
2.集合的字面量
除空集外,集合的字面量可以用——{1},{1, 2}等来表示,注意空集只能写成set()的形式。所以说,除了空集集合的字符串表示形式总是以{……}形式出现。
s = {1}
print(type(s))
#空集
s = set()
3.集合推导
集合推导和之前的列表推导类似,下面是一个简单的示例。
from unicodedata import name
a = {chr(i) for i in range(32, 256) if 'SIGN' in name(chr(i), '')}
print(a)
下面简要介绍一下集合的比较运算符:
运算符 | 方法 | 描述 |
e in s | s._contains_(e) | 元素e是否属于s |
s <= z | s._le_(z) | s是否是z的子集 |
s < z | s._lt_(z) | s是否是z的真子集 |
s >= z | s._ge_(z) | s是否是z的父集 |
s > z | s._gt_(z) | s是否是z的真父集 |