如何使用AND运算符合并两个列表并提取两者共有的元素
问题原因
你写的原有代码存在两个问题:
- 内层循环的
index变量完全没有被使用,嵌套属于无效逻辑,额外拉高了时间复杂度。而且你写的i in testlist1判断完全多余,因为i本身就是从testlist1遍历出来的,必然属于该列表 - 如果两个列表本身不存在公共的int元素,最终返回的结果自然为空
实现方案
方案1:按要求用遍历+AND逻辑判断实现
testlist1 = inverted_index['amsterdam'] testlist2 = inverted_index['utrecht'] merged_testlist = [] for i in testlist1: # AND逻辑同时满足两个条件:存在于testlist2、还没被加入结果列表 if i in testlist2 and i not in merged_testlist: merged_testlist.append(i) print(merged_testlist)
方案2:更高效的集合交集实现(时间复杂度更低)
testlist1 = inverted_index['amsterdam'] testlist2 = inverted_index['utrecht'] # 用集合的&运算符做交集运算,自动去重后转列表即可 merged_testlist = list(set(testlist1) & set(testlist2)) print(merged_testlist)
提示:如果修改代码后还是返回空列表,请先分别打印两个列表的内容,确认二者确实存在公共的int数值。
内容的提问来源于stack exchange,提问作者noobmaster69
相关产品推荐
相关产品推荐

