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

时间:2017-11-02 15:45:55

标签: python list compare

我正在尝试比较三个不同的列表,每个列表的长度可能与其他列表不同,但我不确定如何执行此操作。最初我认为只是获得最大的列表长度,但后来意识到如果其他的更少,那么它将尝试找到空元素并返回错误。 我试图找出所有列表是否都有一个共同的元素

目前我有:

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

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

1 个答案:

答案 0 :(得分:5)

您可以使用set intersection获取所有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)