集合运算
题目描述输入两个集合A、B,按元素升序输出集合的并,交,A-B,B-A, 对称差,并判断和输出两个集合的关系(一共五种):A is superset of B,A is subset of B,A = B,A intersects B,The intersection of A and B is empty。
输入
第一行,n, 集合A的n个整数元素
第二行,m, 集合B的m个整数元素
输出
四行,每行分别输出按元素升序的集合并,交,A-B,B-A, 对称差结果。如果空集,输出None。具体输出格式见样例。
一行,输出两个集合的关系。
输入样例1
5 10 20 4 5 6
3 4 15 6
输出样例1
union: 4 5 6 10 15 20
intersection: 4 6
difference(A-B): 5 10 20
difference(B-A): 15
symmetric_difference: 5 10 15 20
A intersects B
def main():
A = set(map(int, input().split()))
B = set(map(int, input().split()))
union = sorted(A | B)
intersection = sorted(A & B)
difference_A_B = sorted(A - B)
difference_B_A = sorted(B - A)
symmetric_difference = sorted(A ^ B)
print("union:", " ".join(map(str, union)) if union else "None")
print("intersection:", " ".join(map(str, intersection)) if intersection else "None")
print("difference(A-B):", " ".join(map(str, difference_A_B)) if difference_A_B else "None")
print("difference(B-A):", " ".join(map(str, difference_B_A)) if difference_B_A else "None")
print("symmetric_difference:", " ".join(map(str, symmetric_difference)) if symmetric_difference else "None")
if A.issuperset(B):
print("A is superset of B")
elif A.issubset(B):
print("A is subset of B")
elif A == B:
print("A = B")
elif A & B:
print("A intersects B")
else:
print("The intersection of A and B is empty")
if __name__ == "__main__":
main()
请将以上代码复制到你的 Python 编辑器或 IDE 中,运行即可得到你需要的答案。这个程序首先接收输入的两个集合 A 和 B,然后计算它们的并集、交集、差集和对称差,并按升序输出。最后,程序将判断并输出两个集合之间的关系。 以下是这道题的 Python 代码实现:
n = int(input())
set_a = set(map(int, input().split()))
m = int(input())
set_b = set(map(int, input().split()))
# 计算集合并、交、差、对称差
un = sorted(list(set_a.union(set_b)))
insec = sorted(list(set_a.intersection(set_b)))
diff_a = sorted(list(set_a.difference(set_b)))
diff_b = sorted(list(set_b.difference(set_a)))
sym_diff = sorted(list(set_a.symmetric_difference(set_b)))
# 输出集合并、交、差、对称差
print("union:", end=" ")
if un:
print(*un)
else:
print("None")
print("intersection:", end=" ")
if insec:
print(*insec)
else:
print("None")
print("difference(A-B):", end=" ")
if diff_a:
print(*diff_a)
else:
print("None")
print("difference(B-A):", end=" ")
if diff_b:
print(*diff_b)
else:
print("None")
print("symmetric_difference:", end=" ")
if sym_diff:
print(*sym_diff)
else:
print("None")
# 判断两个集合的关系
if set_a.issuperset(set_b):
print("A is superset of B")
elif set_a.issubset(set_b):
print("A is subset of B")
elif set_a == set_b:
print("A = B")
elif set_a.isdisjoint(set_b):
print("The intersection of A and B is empty")
else:
print("A intersects B")
代码说明如下:
1.首先读入输入数据,使用 set() 函数将输入的整数元素转换为集合类型。
2.然后依次求出并、交、差、对称差。这些计算可以通过使用集合的内置函数 union()、intersection()、difference() 和 symmetric_difference() 实现。同时,需要使用 list() 函数将计算结果转换为列表类型
3.在每行的开头输出对应关系的名称,如果计算结果为空集,则输出 None。
4.最后通过使用 issubset()、issuperset()、isdisjoint() 判断两个集合之间的关系,并输出相应的判断结果。 若上述三种情况都不满足,则说明两个集合存在交集,输出 “A intersects B”。
页:
[1]