python中集合set的使用
集set
- 约定
set翻译为集合
collection翻译为集合类型,是一个大概念 - set
是可变的、无序的、不重复的元素集合
set定义、初始化
set()->new empty set object
set(iterable)->new set object
set中的元素
-set中的元素要求必须可以hash
list、set都不能hash
元素不可以使用索引,因为set是无序的
set可以迭代
set增加
- add(elem)
增加一个元素到set中
如果元素存在,什么都不做
-update(*others)
合并其他元素到set集合中来
参数others必须是可迭代对象
就地修改
set删除
-
remove(elem)
从set中移除一个元素
元素不存在,抛出KeyError异常 -
discard(elem)
从set中移除一个元素
元素不存在,什么都不做 -
pop()->item
移除并返回任意的元素,删除任意一个元素
空集返回keyError异常 -
clear()
移除所有元素
set修改、查询
- 修改
要么修改,要么加入新元素 - 查询
非线性结构,无法查询 - 遍历
可迭代所有元素 - 成员运算符
in 安定 not in 判断元素是否在set中
set和线性结构
- 线性结构的查询时间复杂度是O(n),随着规模的增大而耗时
- set、dict等结构,内部使用hash值作为key,时间复杂度可以左到O(1),查询时间和数据规模无关
可hash:
- 数值型:int、float、complex
- 布尔型:True、False
- 字符串:string、bytes
- 元组:tuple
- None
set的元素必须是可hash的
集合
- 全集
所有元素的集合。 - 子集subset和超集superset
一个集合A所有元素都在另外一个集合B内,A是B的子集,B是A的超集 - 真子集和真超集
A是B的子集,且A不等于B,A就是B的真子集,B是A的真超集 - 并集:多个集合合并的结果
- 交集:多个集合的公共部分
- 差集:集合中除去和其他集合公共部分
集合运算
- 并集
将两个集合A和B的所有的元素合并到一起,组成的集合被称作集合A和集合B的并集,符号为 | - 交集
集合A和B,由所有属于A且属于B的元素组成的集合,符号为& - 差集
集合A和B,由所有属于A且不属于B的元素组成的集合,符号为 - - 对称差集
集合A和B,由所有不属于A和B的交集元素组成的集合,记作(A-B)u (B-A),符号为^ - issubset(other):判断当前集合是否是另外一个集合的子集
- set1<set2:判断set1是否是set2的真子集