如何实现正确判断两个列表存在相同字符的Python函数?
问题解决:判断两个列表是否存在共同元素
你的需求很明确:写一个函数接收两个列表,只要它们有任意一个相同元素就返回True,否则返回False。但你当前的代码存在逻辑问题——它只检查第一个元素就直接返回结果了,完全没机会遍历后面的元素!
先看看原代码的问题:
def contains_duplicates(L1, L2): for i in L1: if i in L1 and i in L2: return True else: return False
- 循环第一次迭代时,只要第一个元素不满足条件,就直接
return False,后面的元素根本不会被检查 - 条件里的
i in L1完全多余,因为i本来就是从L1中遍历出来的
修正后的遍历版本
我们需要让循环完整遍历L1的所有元素,只有当所有元素都不匹配时才返回False:
def contains_duplicates(L1, L2): for item in L1: if item in L2: return True # 遍历完所有元素都没找到匹配项,才返回False return False
这个版本会逐个检查L1里的元素,一旦发现某个元素在L2中存在,立刻返回True;如果全部遍历完都没找到共同元素,才返回False,完美符合你的需求。
更高效的集合写法
如果你的列表元素比较多,用集合来处理会更高效(集合的成员查询时间复杂度是O(1),而列表是O(n)):
def contains_duplicates(L1, L2): return bool(set(L1) & set(L2))
原理是把两个列表转换成集合,求它们的交集。如果交集不为空,bool()转换后就是True,否则是False,代码更简洁,性能也更好。
内容的提问来源于stack exchange,提问作者LiliaVR
相关产品推荐
相关产品推荐

