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')

 

 

posted @ 2018-07-04 16:16  犀利的攻城狮  阅读(157)  评论(0)    收藏  举报