集合常用操作-交叉并补
"""
集合1.difference(集合2) 差集
集合1 - 集合2
"""
set1 = {"周杰伦", "王宝强", "李宇春", "斯嘉丽"}
set2 = {"周润发", "刘德华", "李宇春", "斯嘉丽"}
# 运算符
# 算set1的差集
print(set1 - set2) # {'王宝强', '周杰伦'}
# 算set2的差集
print(set2 - set1) # {'刘德华', '周润发'}
# 方法
# 算set1的差集
print(set1.difference(set2)) # {'周杰伦', '王宝强'}
# 算set2的差集
print(set2.difference(set1)) # {'周润发', '刘德华'}
"""
并集
集合1.union(集合2)
集合1 | 集合2
"""
set1 = {"周杰伦", "李宇春", "王宝强", "斯嘉丽"}
set2 = {"周润发", "刘德华", "斯嘉丽", "李宇春"}
# 运算符
print(set1 | set2) # {'周杰伦', '刘德华', '李宇春', '王宝强', '斯嘉丽', '周润发'}
# 方法
print(set1.union(set2)) # {'周杰伦', '周润发', '李宇春', '斯嘉丽', '王宝强', '刘德华'}
"""
交集
集合1.intersection(集合2)
集合1 & 集合2
"""
set1 = {"周杰伦", "李宇春", "王宝强", "斯嘉丽"}
set2 = {"周润发", "刘德华", "斯嘉丽", "李宇春"}
# 运算符
print(set1 & set2) # {'斯嘉丽', '李宇春'}
# 方法
print(set1.intersection(set2)) # {'斯嘉丽', '李宇春'}
"""
对称差集:返回两个集合中不重复的元素集合, 补集情况涵盖在其中
集合1.symmetric_difference(集合2)
集合1 ^ 集合2
"""
set1 = {"周杰伦", "李宇春", "王宝强", "斯嘉丽"}
set2 = {"周润发", "刘德华", "斯嘉丽", "李宇春"}
print(set1 ^ set2) # {'刘德华', '周杰伦', '周润发', '王宝强'}
print(set1.symmetric_difference(set2)) # {'刘德华', '周杰伦', '周润发', '王宝强'}
"""基于对称差集就可以很方便的得到补集"""
# (A ^ B) & B = A的补集
# (A ^ B) & A = B的补集
set1 = {"周杰伦", "李宇春", "王宝强", "斯嘉丽"}
set2 = {"周润发", "刘德华", "斯嘉丽", "李宇春"}
# set1的补集
print((set1 ^ set2) & set2) # {'周润发', '刘德华'}
# set2的补集
print((set1 ^ set2) & set1) # {'周杰伦', '王宝强'}
"""
issuperset 判断一个集合是否是另一个集合的超集(父集)
issubset 判断一个集合是否是另一个集合的子集
"""
set1 = {"A", "B", "C", "D"}
set2 = {"A", "D"}
set3 = {"A", "C"}
# 判断set1是否是set2的父集
print( set1.issuperset(set2)) # True
# 判断set3是否是set1的子集
print( set3.issubset(set1)) # True
# 判断set2是否是set3的父集
print( set2.issuperset(set3)) # False
# 判断set2是否是set3的子集
print( set2.issubset(set3)) # False