【发布时间】:2018-01-21 13:29:11
【问题描述】:
给定一个整数列表,我想检查第二个列表,并从第一个列表中删除那些不能由第二个中的两个数字之和组成的列表。所以给定a = [3,19,20] 和b = [1,2,17],我想要[3,19]。
看起来很简单,有两个嵌套循环 - 除了我被 break 和 continue 命令卡住了。
这是我所拥有的:
def myFunction(list_a, list_b):
for i in list_a:
for a in list_b:
for b in list_b:
if a + b == i:
break
else:
continue
break
else:
continue
list_a.remove(i)
return list_a
我知道我需要做什么,只是语法似乎不必要地令人困惑。有人可以告诉我一个更简单的方法吗?蒂亚!
【问题讨论】:
-
如果
a包含a = [3, 4, 19, 20]怎么办?那么有两个可能的和:3+20和4+19,那么在这种情况下要删除什么? -
对
b进行排序并使用二分搜索...? -
19也可以用2+17组成。另外,如何从列表 B 的 2 个元素的总和中得出 3?
-
抱歉,我不小心使用了不正确的示例 - 现在已修复。
-
@JohnColeman:是的,只是因为我正在通过删除那些无法制作的东西来接近它。早些时候,我试图列出所有 可以 制作的内容,然后删除重复项,但这似乎效率较低。
标签: python nested-loops continue