定义:set集合是由一系列不重复的不可变类型变量组成的可变映射容器。
特点:
- 相当于只有键没有值的字典,不方便对某一个元素进行读写操作
- 集合元素不允许重复
一、集合的创建与删除
1.创建空集合
setname = set()
2.创建具有默认值的集合
方法一:setname = {element1, element2, element3, ..., element n}
方法二:setname = set(可迭代对象) # 可迭代对象可以是列表、元组、range对象、字符串
3.删除集合
del setname
二、读取集合元素
由于集合的存储是基于哈希原理的,无法排序,也无法通过索引访问字典元素(即无法获取单个元素并修改)
1.打印全集合元素
print(setname)
2.循环遍历集合元素
for element in setname:
print(element)
三、添加、删除集合元素
1.添加元素
setname.add(element)
# 在集合中添加一个新的元素e;如果元素已经存在,则不添加;
# 此处element只能使用字符串、数字及布尔类型,不可使用列表、元组等可迭代对象
setname01.update(setname02)
# 将集合setname02合并到集合setname01中,去除重复元素
2.删除元素
setname.remove(element)
# 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误
setname.remove(element)
# 从集合setname中移除一个元素element,在元素element不存在时什么都不做
setname.pop(element)
# python2中从集合setname中删除一个随机元素并返回
# python3中则从集合setname中删除第一个元素并返回
# 如果此集合为空,则引发KeyError异常
setname.clear()
# 清空集合内的所有元素
四、集合运算
s01 = {1, 2, 3, 4, 5, 6}
s02 = {4, 5, 6 ,7, 8, 9}
1.交集(取重复)
print(s01 & s02) # {4, 5, 6} 注:顺序不一定有序
2.并集(去重复)
print(s01 | s02) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
3.补集
print(s01 ^ s02) # {1, 2, 3, 7, 8, 9}
print(s01 - s02) # {1, 2, 3}
print(s02 - s01) # {7, 8, 9}
4.子集和超集
s03 = {1, 2, 3}
s04 = {1, 2, 3}
print(s04 <= s03) # True
# s04是s03的子集,s03是s04的超集
5.关于集合运算的方法
S.difference(s2) # 用S - s2 运算,返回存在于在S中,但不在s2中的所有元素的集合
S.difference_update(s2) # 等同于 S = S - s2
S.intersection(s2) # 等同于 S & s2
S.intersection_update(s2)#等同于S = S & s2
S.isdisjoint(s2) # 如果S与s2交集为空返回True,非空则返回False
S.issubset(s2) # 如果S与s2交集为非空返回True,空则返回False
S.issuperset(...) # 如果S为s2的子集返回True,否则返回False
S.symmetric_difference(s2)# 返回对称补集,等同于 S ^ s2
S.symmetric_difference_update(s2) # 用 S 与 s2 的对称补集更新 S
S.union(s2) # 生成 S 与 s2的全集
五、集合的其他方法
setname.copy() # 将集合进行一次浅拷贝
六、固定集合(frozenset)
固定集合是不可变集合,它没有预留空间,不能增,不能删
s = frozenset(可迭代对象) # 可迭代对象可以是列表、元组、range对象、字符串