Поиск одинаковых элементов в двух списках

def func(l1, l2):
    for x in l1:
        for y in l2:
            if x == y:
                return True
            return False

print(func([1,2,3,4,5], [5,6,7,8,9])) >> False
print(func([1,2,3,4,5], [6,7,8,9]))   >> False

Почему функция не видит элемент 5 в первом случае?

Если попробовать вот так:

def func(l1, l2):
    for x in l1:
        for y in l2:
            if x == y:
                return True
                return False

print(func([1,2,3,4,5], [5,6,7,8,9])) >> True
print(func([1,2,3,4,5], [6,7,8,9])) >> None

Теперь видит 5ку в первом случае, но почему выдает None во втором? Как сделать, чтобы выдавал False?


Ответы (1 шт):

Автор решения: Dareten

Потому что во втором случае False недостижимо. А в первом случае return False будет исполнено после сравнения первого элемента со всеми элементами второго.

Проще будет сделать так:

def func(l1, l2):
    for x in l1:
        if x in l2:
            return True
    return False

print(func([1,2,3,4,5], [6,7,8,9])) # False
print(func([1,2,3,4,5], [5,6,7,8,9])) # True
→ Ссылка