geekdoc-python-zh/docs/py4b/check-for-disjoint-sets-in-...

4.0 KiB
Raw Permalink Blame History

检查 Python 中不相交的集合

原文:https://www.pythonforbeginners.com/basics/check-for-disjoint-sets-in-python

在 python 中,集合是用于存储唯一不可变对象的容器对象。在本文中,我们将讨论 python 中的不相交集合。我们还将讨论 python 中检查不相交集合的不同方法。

什么是不相交集合?

如果两个集合没有任何公共元素,则称它们是不相交的。如果两个给定的集合之间存在任何公共元素,那么它们就不是不相交的集合。

假设我们已经设置了 A、B 和 C如下所示。

A = {1, 2, 3, 4, 5, 6, 7, 8}
B = {2, 4, 6, 8, 10, 12}
C = {10, 20, 30, 40, 50}

在这里,您可以观察到集合 A 和集合 B 有一些共同的元素,即 2、4、6 和 8。因此它们不是不相交的集合。另一方面集合 A 和集合 C 没有公共元素。因此,集合 A 和集合 C 将被称为不相交集合。

Python 中如何检查不相交集合?

要检查不相交的集合,我们只需检查给定集合中是否存在任何公共元素。如果两个集合中有公共元素,那么这两个集合就不是不相交的集合。否则,它们将被视为不相交的集合。

为了实现这个逻辑,我们将声明一个变量isDisjoint并将其初始化为True,假设两个集合都是不相交的集合。之后,我们将使用 for 循环遍历其中一个输入集。在遍历时,我们将检查集合中的每个元素是否存在于另一个集合中。如果我们在第一个集合中找到任何属于第二个集合的元素,我们将把值False赋给变量isDisjoint,表示这些集合不是不相交的集合。

如果输入集之间没有公共元素,那么在执行 for 循环后,isDisjoint变量将保持为True。因此,表示这些集合是不相交的集合。

def checkDisjoint(set1, set2):
    isDisjoint = True
    for element in set1:
        if element in set2:
            isDisjoint = False
            break
    return isDisjoint

A = {1, 2, 3, 4, 5, 6, 7, 8}
B = {2, 4, 6, 8, 10, 12}
C = {10, 20, 30, 40, 50}
print("Set {} is: {}".format("A", A))
print("Set {} is: {}".format("B", B))
print("Set {} is: {}".format("C", C))
print("Set A and B are disjoint:", checkDisjoint(A, B))
print("Set A and C are disjoint:", checkDisjoint(A, C))
print("Set B and C are disjoint:", checkDisjoint(B, C))

输出:

Set A is: {1, 2, 3, 4, 5, 6, 7, 8}
Set B is: {2, 4, 6, 8, 10, 12}
Set C is: {40, 10, 50, 20, 30}
Set A and B are disjoint: False
Set A and C are disjoint: True
Set B and C are disjoint: False

建议阅读:Python 中的聊天应用

使用 isdisjoint()方法检查不相交的集合

除了上面讨论的方法,我们可以使用isdisjoint()方法来检查 python 中不相交的集合。当在一个集合上调用时,isdisjoint() 方法将另一个集合作为输入参数。执行后,如果集合是不相交的集合,则返回True。否则返回False。您可以在下面的示例中观察到这一点。

A = {1, 2, 3, 4, 5, 6, 7, 8}
B = {2, 4, 6, 8, 10, 12}
C = {10, 20, 30, 40, 50}
print("Set {} is: {}".format("A", A))
print("Set {} is: {}".format("B", B))
print("Set {} is: {}".format("C", C))
print("Set A and B are disjoint:", A.isdisjoint(B))
print("Set A and C are disjoint:", A.isdisjoint(C))
print("Set B and C are disjoint:", B.isdisjoint(C))

输出:

Set A is: {1, 2, 3, 4, 5, 6, 7, 8}
Set B is: {2, 4, 6, 8, 10, 12}
Set C is: {40, 10, 50, 20, 30}
Set A and B are disjoint: False
Set A and C are disjoint: True
Set B and C are disjoint: False

结论

在本文中,我们讨论了在 python 中检查不相交集合的两种方法。要了解更多关于集合的知识,你可以阅读这篇关于 python 中集合理解的文章。你可能也会喜欢这篇关于 python 中的列表理解的文章。