集合的定义
- 由不同元素组成(不可重复)
- 无序
- 集合中的元素必须是不可变类型,集合是可变类型,可以使用frozenset定义不可变集合
- 集合可以作为字典的Key
# 可变集合,允许添加 删除元素
setTest = {1,2,3,6,5}
# 不可变集合
set3 = frozenset({1,2,5,3,7})
set4 = frozenset('Django')
集合的内置方法
- add 添加元素(不可重复)
只可以添加不可重复的元素
- clear 清空集合
- pop 随机删除一个元素
- remove 根据元素值删除该元素,不存在抛出异常
- discard 根据元素值删除该元素,不存在不会抛出异常
集合关系运算
- set 列表、元组去重,并转换为集合
test = [1,1,2,2,3,3]
test2 = (1,1,2,2,3,3)
print(set(test)) # {1, 2, 3}
print(set(test2)) # {1, 2, 3}
- intersection 计算交集 (set1&set2)
set1 = {1,2,3,4,5,6}
set2 = {2,3,4,5,6,7,8,9}
print(set1.intersection(set2))
print(set1&set2)
{2, 3, 4, 5, 6}
- intersection_update求完交集之后更新,只更新set1
set1.intersection_update(set2)
print(set1) # {2, 3, 4, 5, 6}
print(set2) # {2, 3, 4, 5, 6, 7, 8, 9}
- union 计算并集 (set1|set2)
print(set1.union(set2))
print(set1|set2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
- update 计算并集,并更新Set1
set1.update(set2)
print(set1) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set2) # {2, 3, 4, 5, 6, 7, 8, 9}
- difference 计算差集(set2-set1)
print(set2.difference(set1))
print(set2-set1) #两种写法
{8, 9, 7}
- difference_update 求完差集之后更新,只更新被减数
set1.difference_update(set2)
print(set1) # {1}
print(set2) # {2, 3, 4, 5, 6, 7, 8, 9}
- symmetric_difference 交叉补集(set1^set2)
set1.symmetric_difference(set2)
set1^set2 #两种写法
{1, 7, 8, 9}
- symmetric_difference_update求完交叉补集之后更新,只更新set1
set1.symmetric_difference_update(set2)
print(set1) # {1, 7, 8, 9}
print(set2) # {2, 3, 4, 5, 6, 7, 8, 9}
- isdisjoint 当两个集合没有交集时返回True
- issubset 判断set1是否为set2的子集,若是返回True
- issuperset 判断Set1是set2的父集,若是,返回True