Python比较了三个不同长度的列表



我正在尝试比较三个不同的列表,每个列表的长度可能与其他列表不同,但我不确定如何做到这一点。最初我以为只是获得最大的列表长度,但后来意识到如果其他列表长度较小,那么它将尝试查找空元素并返回错误。我正在尝试查找是否所有列表都具有共同元素

目前我有:

for i in range(n) //n is largest list length
    if (listA[i] in listB) and (listA[i] in listC):
        common = True
    else:
        common = False

如果可能的话,您能否给出一个答案,它可以应用于许多列表,而不是局限于三个列表

您可以使用集合交集获取所有 3 个列表的所有常见元素:

intersection = set(listA) & set(listB) & set(listC)
common = bool(intersection)  # True if not empty

循环中两个列表的包含检查具有时间复杂度O(A*(B+C))(二次)。这是O(A+B+C)(线性)。

如果整个十字路口的信息比您需要的要多,您仍然可以执行以下操作并从提前休息中受益:

setBC = set(listB) & set(listC)
common = any(x in setBC for x in listA)

相关内容

  • 没有找到相关文章