集合:无序的不重复的数据集合
作用:
去重
关系测试,测试两组数据之间的交集,差集和并集等关系
特征:
确定性,元素必须可hash
互异性
无序性,集合中的元素没有先后之分
集合的用法:
- 创建
s = {1,2,3,4}
- 增加
>>> s.add(1) // 重复的数据加入不进去
>>> s
{1, 2, 3, 4}
>>> s.add(5) // add 只可添加可 hash 值
>>> s.update([2,3,4,7,8]) // 可以把多个值加入到集合
>>> s
{1, 2, 3, 4, 5, 7, 8}
- 删除
>>> s.pop() // 随机删除集合内的值,如果集合为空会报错
1
>>> s.discard(4) // 删除指定的数值,即使集合内没有这个值也不会报错
>>> s.discard(0)
>>> s.clear() // 清空整个集合
- 关系测试之交集
>>> s = {1, 2, 3, 4}
>>> s2 = {3, 4, 5, 6}
>>> s.intersection(s2) // 取 s s2 之间的交集
{3, 4}
>>> s & s2 // 可以用 & 符来提取
{3, 4}
- 关系测试之差集
>>> s.difference(s2) // s s2 之间的差集并打印只在 s 的值
{1, 2}
>>> s - s2 // 或者用 - 号来提取
{1, 2}
>>>
>>> s2.difference(s) // s s2 之间的差集并打印只在 s2 的值
{5, 6}
>>> s2 - s
{5, 6}
- 关系测试之并集
>>> s.union(s2) // 将 s s2合并,并去掉重复值
{1, 2, 3, 4, 5, 6}
>>> s | s2 // 或者用 |
{1, 2, 3, 4, 5, 6}
- 关系测试之对称差集
>>> s.symmetric_difference(s2) // 合并只存在 s s2 中的值
{1, 2, 5, 6}
>>> s ^ s2 // 或者用 ^ 括号
{1, 2, 5, 6}
- 包含关系
>>> s.isdisjoint(s2) // 判断两个集合是否不相交
False
>>> s2
{3, 4, 5, 6}
>>> s.update([5,6])
>>> s
{1, 2, 3, 4, 5, 6}
>>> s.issuperset(s2) // 判断集合是否包含其他集合,相当于 a >=b
True
>>> s.issubset(s2) // 判断集合是否被其他集合所包含
False
>>> s2.issubset(s) // s2 被 s所包含,相当于 a <=b
True