我可以检查一个列表是否包含另一个列表中的任何项目吗?

Sha*_*mes 24 python list set-intersection

使用Python,我想检查一个列表是否包含另一个列表中也存在的项目/值。例如,这是我正在尝试做的事情:

list1 = ['item1','item2','item3']
list2 = ['item4','item5','item3']

if list1 contains any items also in list2:
    print("Duplicates found.")
else:
    print("No duplicates found.")
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,list2 包含一个在 list1 中也可以找到的项目,即“item3”。有什么方法可以检测是否发生这种情况吗?

谢谢。

rda*_*das 41

any()与生成器表达式一起使用:

list1 = ['item1','item2','item3']
list2 = ['item4','item5','item3']

if any(x in list1 for x in list2):
    print("Duplicates found.")
else:
    print("No duplicates found.")
Run Code Online (Sandbox Code Playgroud)


Tey*_*dge 13

你可以使用一个set. 是一种方法,如果两个集合没有任何共同点并且集合重叠,则isdisjoint返回。将和转换为集合后,它们都包含so returns 。TrueFalselist1list2'item3'isdisjointFalse

set(list1).isdisjoint(set(list2))
Run Code Online (Sandbox Code Playgroud)
>>> list1 = ['item1','item2','item3']
>>> list2 = ['item4','item5','item3']
>>> set(list1).isdisjoint(set(list2))
False
Run Code Online (Sandbox Code Playgroud)

您可以将其与not运算符结合起来执行您想要的操作。

list1 = ['item1','item2','item3']
list2 = ['item4','item5','item3']

if not set(list1).isdisjoint(set(list2)):
    print("Duplicates found.")
else:
    print("No duplicates found.")
Run Code Online (Sandbox Code Playgroud)