我有两个清单。我需要编写一个函数detect
用于list_a'循环中的项目以检查该项目是否存在于list_b中。
我该怎么做呢? 如果没有合适的关键字,我找不到任何内容!
list_a = ["Q", "W", "E"]
list_b = ["Q", "D", "E"]
def detect(item):
return
detect(list_a[0])
>>True
detect(list_a[1])
>>False
我试过了:
for item in list_a:
if item in list_b:
return True
else:
return False
答案 0 :(得分:6)
>>> set_b = set(["Q", "D", "E"])
>>> set_a = set(["Q", "W", "E"])
>>> set_a.intersection(set_b)
set(['Q', 'E'])
>>> 'Q' in set_a.intersection(set_b)
True
>>> '42' in set_a.intersection(set_b)
False
答案 1 :(得分:2)
要检查项目是否在列表中,您可以使用in
运算符: -
"Q" in ["Q", "W", "R"]
>> True
现在,对于list_a
中的每个项目,请检查它是否在list_b
中。这将给你想要的结果。
答案 2 :(得分:1)
你尝试的几乎是正确的。这是一个更正版本:
def detect(item, list_a, list_b):
for item in list_a:
if item in list_b:
return True
return False # not found
您的版本存在的问题是它只检查了list_a
中的第一项,并返回了True
或False
值。修改后的版本会继续运行,直到在两个列表中找到某些内容,或者只有在检查了第一个列表中的所有内容后才返回False
。
如果您要调用该函数,可以通过创建和使用set
而不是一个或两个列表来优化它,因为in
运算符的运行速度更快set
而不是list
。但是,将列表转换为set会产生一些开销,因此可能不值得付出努力。