Python3中的集合类型主要有两种
set 可变集合
可添加和删除元素,它是不可哈希的,因此set对象不能用作字典的键或另一个元素的集合
forzenset 不可变集合
正好与set相反,其内容创建后不能更改,它是不可改变的集合,是可哈希的
注:
1.set集合是一组无序的且不可重复的元素的集合,访问速度较快
2.set的构造参数需要一个序列对象,这个序列可以是可变类型,但序列中的元素必须是不可变类型(即可哈希的)
3.集合支持类似其他容器的len(set)、for x in set,但不支持索引、切片或其他类似序列的行为
相关内置函数
len(set)
返回集合中元素的个数
set、forzenset 集合对象常用方法
s.isdisjoint(other_set)
如果集合s中的元素与集合other_set中的任何一个元素都不同,即两集合不相交(交集为空),则返回True,否则返回False
s.issubset(other_set)
或 s <= other_set
如果集合s是集合other_set的子集,则返回True,否则返回False
s < other_set
如果集合s是集合other_set的真子集,则返回True,否则返回False
s.supperset(other_set)
或 s >= other_set
如果集合s是集合other_set的超集,则返回True,否则返回False
s > other_set
如果集合s是集合other_set的真超集,则返回True,否则返回False
s.union(other_set...)
或 set | other | ...
返回一个新集合,集合中会保留s集合与其他集合的并集,即所有集合中不重复的全部元素
s.intersection(other_set...)
或 set & other & ...
返回一个新集合,集合中只会保留s集合与其他所有other_set的交集,即所有集合都有的元素
s.difference_update(other_set...)
或 set - other - ...
返回一个新集合,集合中只会保留其他所有other_set的差集合,即别的集合都没有的元素
s.symmetric_difference_update(other_set)
或 set ^ other
返回一个新集合,集合中只会保留仅存在于其中一个集合(不能两个集合都存在)中的元素
s.copy()
返回一个浅拷贝s的新集合
仅set集合对象支持的常用方法
s.add(elem)
添加元素到elem到集合s
s.remove(elem)
删除集合s中的elem元素,找不到引发异常KeyError
s.discard(elem)
类似于remove,但找不到不会引发异常
s.pop()
从集合中移除并返回任意元素,如果集合为空,则引发异常KeyError
s.clear()
删除集合中所有的元素
s.update(other_set...)
或 set |= other | ...
更新集合s,s中会保留s集合与其他集合的并集,即所有集合中不重复的全部元素
s.intersection_update(other_set...)
或 set &= other & ...
更新集合s,s中只会保留s集合与其他所有other_set的交集,即所有集合都有的元素
s.difference_update(other_set...)
或 set -= other | ...
更新集合s,s中只会保留其他所有other_set的差集合,即别的集合都没有的元素
s.symmetric_difference_update(other_set)
或 set ^= other
更新集合s,s中只会保留仅存在于其中一个集合(不能两个集合都存在)中的元素