我是编程半菜鸟,正在通过Torbjoern Lager的46个简单Python练习。这是数字10:定义一个函数overlap(),它接受两个列表,如果它们至少有一个共同的成员,则返回True,否则返回False。你可以使用你的is_member()函数或in运算符,但为了练习,你应该(也)使用两个嵌套的for循环来编写它。
def over(list1,list2):
for i in list1:
for j in list2:
return i==j
我认为我有一个很好的,简单的解决方案,但它无法识别列表重叠,除非重叠元素是第一个。
over(["a","b","c","d"],["e","f","a","h"])
返回False
over(["a","b","c","d"],["a","f","g","h"])
返回True
出于某种原因,它没有搜索所有组合。任何帮助将不胜感激。
答案 0 :(得分:1)
问题是你在第一次迭代时返回i==j
。你的函数只是比较list1 [0]和list2 [0]。解决方案是添加if
。
这是一个例子:
def over(list1,list2):
for i in list1:
for j in list2:
if i == j:
return True
return False
答案 1 :(得分:-1)
执行“返回”时,执行会在那里停止,就像在Java中发生一样。它返回true,因为你在两个数组的第一个位置都有'a'。
你可以试试这个:
result = False;
for i in list1:
for j in list2:
if i == j:
result=True;
return result
如果您希望它更有效:
for i in list1:
for j in list2:
if i == j:
return True;
return False;