1. 程式人生 > 其它 >3-集合常用操作-交叉並補

3-集合常用操作-交叉並補

集合常用操作-交叉並補

"""
集合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