检查两个列表是否共享至少一个元素

时间:2014-06-17 18:17:22

标签: python list

我有两个列表,例如:

a = ["mail1", "mail2", "mail3", "mail4"]
b = ["mail2", "mail5"]

我想检查列表b中是否还有a列表中的任何元素。

我想知道在没有for循环的情况下是否有办法(以及它是什么)。

此外,我想知道如何创建布尔值列表,其中每个值都是值a[i]b[i]的比较结果,如:

[z for i, j in zip(a, b)  z = i == j] # (just with the right syntax)
如果在某个地方z

1将为i == j,因此我可以检查数组是否有任何“真实”字样。值。

3 个答案:

答案 0 :(得分:8)

优雅的方法是使用集合:

a = ["mail1", "mail2", "mail3", "mail4"]
b = ["mail2", "mail5"]

anb = set(a) & set(b)

print anb

if anb:
    print True

>>> set(['mail2'])
>>> True

答案 1 :(得分:8)

您可以使用any

any(x in a for x in b)

这个生成器表达式的好处是any只要生成器产生True就会返回True,即不会多余x in a } lookups。

关于你的新问题:

[x == y for x,y in zip(a,b)]

答案 2 :(得分:0)

any函数采用可迭代的(See documentation here),因此答案应为any([x in a for x in b])