集合 set:
集合是可变的容器
集合内的数据对象都是唯一的(不能重复)
集合是无序的存储结构,集合总得数据没有先后关系
集合内的元素必须是不可变对象
集合是可迭代的
集合是相当于只有键的字典
集合的构造函数:
set() # 创建一个空的集合对象
set(iterable) # 用可迭代对象创建一个新的集合对象
例:
>>> set("ABC")
{'B', 'C', 'A'}
>>> set("ABCCBA")
{'B', 'C', 'A'}
集合的运算:
交集,并集,补集,子集,超集
& 生成两个集合的交集
>>> s1 = {1, 2, 3}
>>> s2 = {2, 3, 4}
>>> s1 & s2
{2, 3}
| 生成两个集合的并集
>>> s1 = {1, 2, 3}
>>> s2 = {2, 3, 4}
>>> s1 | s2
{1, 2, 3, 4}
- 生成两集合的补集
>>> s1 = {1, 2, 3}
>>> s2 = {2, 3, 4}
>>> s1 -s2
{1}
>>> s2 - s1
{4}
^生成两个集合的对称补集
>>> s1 = {1, 2, 3}
>>> s2 = {2, 3, 4}
>>> s1 ^ s2
{1, 4}
> 判断一个集合是另一个集合的超集
< 判断一个集合是另一个集合的子集
>>> s2 = s1 | s2
>>> s1 > s2
False
>>> s1 < s2
True
== != 判断是否相同
>>> s1 == s2
False
另:
>= 超集或相同
<= 子集或相同
in/not in 运算符
等同于字典,in用于集合中,判断一个值是否存在于集合中
not in 反之
字典和集合的优点:
in/not in 运算符的查找速度快
集合常用方法:
S.add(e) # 在集合中添加一个新的元素e,如果元素存在,则不添加
S.remove(e) # 从集合中删除一个元素,如果元素不存在于集合中则会产生一个KeyError的错误
S.discard(e) # 从集合中移除一个元素(不会产生错误)
S.clear() # 清空集合
S.copy() # 将集合浅拷贝
S.pop() # 从集合s中删除一个随机元素,如果集合为空,则引发KeyError的错误
S.update(s2) # 用s2更新集合S
集合推导式:
作用:
生成集合
语法:
{表达式 for 变量 in 可迭代对象[if 真值表达式]}
例:
# 生成x平方的集合
>>> {x**2 for x in range(10)}
{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}
固定集合:
作用:
创建一个不可变的集合,无序的,含唯一元素的集合
固定集合的构造函数:
frozenset() # 创建空的固定集合
frozenset() # 用可迭代对象创建一个固定集合
运算:
& 交集
| 并集
- 补集
^ 对称补集
in / not in 运算符
< <= > >= == !=
以上运算符与set使用相同
固定集合的方法:
相当于集合的全部方法(去掉修改集合的方法)
用途:
固定集合可以作为字典的键,还可用作集合的值