鱼C论坛

 找回密码
 立即注册
查看: 1956|回复: 2

[已解决]集合运算

[复制链接]
发表于 2023-4-23 21:53:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述

输入两个集合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
最佳答案
2023-5-20 11:14:55
以下是这道题的 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”。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-23 21:55:51 | 显示全部楼层
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,然后计算它们的并集、交集、差集和对称差,并按升序输出。最后,程序将判断并输出两个集合之间的关系。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-20 11:14:55 | 显示全部楼层    本楼为最佳答案   
以下是这道题的 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”。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 03:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表