在python中为True时,重叠列表函数返回False

时间:2015-08-15 21:13:25

标签: python list overlap

我是编程半菜鸟,正在通过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

出于某种原因,它没有搜索所有组合。任何帮助将不胜感激。

2 个答案:

答案 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;