Rosalind 041 Introduction to Set Operations

发布时间:2024年01月06日

背景:

这个问题是关于集合论的基础练习,集合论是数学的一个基本领域,涉及到集合的研究,集合是对象的集合。

  1. 并集 (A∪B):这个操作结合了集合 A 和 B 中的所有元素,并去除了重复的元素。它的结果是一个新的集合,包含了在 A、B 中或同时在 A 和 B 中的每个元素。

  2. 交集 (A∩B):这个操作找出集合 A 和 B 之间的共同元素。结果集合包含了同时在 A 和 B 中的所有元素。

  3. 集合差 (A?B 和 B?A):这个操作找出一个集合中有而另一个集合中没有的元素。A?B 得到的是在 A 中但不在 B 中的元素的集合,而 B?A 得到的是在 B 中但不在 A 中的元素的集合。

  4. 补集 (Ac 和 Bc):集合 A 的补集 Ac 是指相对于全集 U 中不在 A 中的元素的集合。同样地,B 的补集 Bc 是指在 U 中不在 B 中的元素的集合。

例子:

给定的样本数据集:

  • n = 10(这意味着全集 U 是 {1, 2, 3, 4, 5, 6, 7, 8, 9, 10})

  • A = {1, 2, 3, 4, 5}

  • B = {2, 8, 5, 10}

我们需要计算:

  • A∪B

  • A∩B

  • A?B

  • B?A

  • Ac(相对于 {1, 2, ..., 10})

  • Bc(相对于 {1, 2, ..., 10})

输出正确地展示了这些操作基于所提供的 A 和 B。让我们分解样本输出:

  • A∪B = {1, 2, 3, 4, 5, 8, 10}(A 和/或 B 中的所有元素)

  • A∩B = {2, 5}(A 和 B 共有的元素)

  • A?B = {1, 3, 4}(在 A 中但不在 B 中的元素)

  • B?A = {8, 10}(在 B 中但不在 A 中的元素)

  • Ac = {6, 7, 8, 9, 10}(在 U 中但不在 A 中的元素)

  • Bc = {1, 3, 4, 6, 7, 9}(在 U 中但不在 B 中的元素)

代码:

filename = '.txt'

with open(filename, 'r') as file:
    # 读取第一行,并转换为整数
    n = int(file.readline().strip())

    # 读取第二行,转换为集合
    A = set(map(int, file.readline().strip()[1:-1].split(',')))

    # 读取第三行,转换为集合
    B = set(map(int, file.readline().strip()[1:-1].split(',')))


seta = set()
for i in A:
    if 1<=i<=n:
        seta.add(i)
setb = set()
for i in B:
    if 1<=i<=n:
        setb.add(i)


all =set([i+1 for i in range(int(n))])


print(seta | setb) # 并集
print(seta & setb) # 交集
print(seta - setb) # 下两项为差集
print(setb - seta)
print(all - seta) # 下两项为补集
print(all - setb)

文章来源:https://blog.csdn.net/weixin_45848873/article/details/135420270
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。