D14-03 04 集合关系运算 交 差 并 其他内置方法
求交集 p_s.intersection(l_s) 或者 p_s&l_s
python_l=['lcg','szw','zjw'] linux_l=['lcg','szw'] p_s=set(python_l) l_s=set(linux_l) print(p_s,l_s) print(p_s.intersection(l_s))
输出结果
{'szw', 'zjw', 'lcg'} {'szw', 'lcg'}
{'szw', 'lcg'}
求并集 p_s.union(l_s) 或者 p_s|l_s
python_l=['lcg','szw','zjw'] linux_l=['lcg','szw'] p_s=set(python_l) l_s=set(linux_l) print(p_s,l_s) print(p_s.union(l_s))
输出结果
{'zjw', 'szw', 'lcg'} {'szw', 'lcg'}
{'zjw', 'szw', 'lcg'}
求差集 存在于左边集合中不存于右边集合中 (p_s.difference(l_s)) 或者用 - 减号
linux_l=['lcg','szw'] p_s=set(python_l) l_s=set(linux_l) print(p_s,l_s)
print(p_s.difference(l_s))
输出结果
{'szw', 'lcg', 'zjw'} {'szw', 'lcg'}
{'zjw'}
交叉补集 去除两个集合中都有的部分 ^符号上三角 shift+6
python_l=['lcg','szw','zjw'] linux_l=['lcg','szw','123'] p_s=set(python_l) l_s=set(linux_l) print(p_s,l_s) print(p_s.symmetric_difference(l_s))
输出结果
{'szw', 'lcg', 'zjw'} {'szw', '123', 'lcg'}
{'zjw', '123'}
difference_update表示p_s删除包含l_s中的所有元素 并更新p_s 此时没有返回值 p_s.difference_update(l_s)
python_l=['lcg','szw','zjw'] linux_l=['lcg','szw','123'] p_s=set(python_l) l_s=set(linux_l) print(p_s,l_s) print(p_s.difference_update(l_s)) print(p_s)
输出结果
{'lcg', 'zjw', 'szw'} {'lcg', 'szw', '123'}
None
{'zjw'}
判断没有交集返回True
s1={1,2} s2={3,4} print(s1.isdisjoint(s2)) 输出结果 True
s1.issubset() 相当于s1小于s2 s1是s2的子集
s1={1,2,3,4} s2={3,4} print(s1.issubset(s2))
输出结果 False 因为 s1是s2父集
s1.issuperset(s2) 与上条对应看
s1={1,2,3,4} s2={3,4} print(s1.issuperset(s2))
输出结果 True
updata 更新多个值包括元组、列表等 可迭代的元素
s1={1,2,3,4} s2={3,4,5} print(s1.update(s2)) print(s1)
输出结果
{1, 2, 3, 4, 5}
定义不可变集合 s = frozenset('ssfsf')