2010-10-24 6 views
0

Я должен определить функцию overlapping(), которая принимает два списка и возвращает True, если они имеют хотя бы один член вместе, False в противном случае. Для упражнения я должен написать его, используя две вложенные петли. Что я делаю не так?Сравнение двух списков, python

def overlapping(a,b): 
    for char in a: 
     for char2 in b: 
      return char in char2 

Любые предложения, как заставить его работать?

+0

См. [Это] (http://stackoverflow.com/questions/2197482/efficiently-knowing-if-intersection-of-two-list-is-empty-or-not-in-python/2215556#2215556) отвечать за идеи. Вполне возможно, что вы и Мануэль имели тот же курс и/или учитель. – tzot

ответ

2

Если вам действительно нужно использовать 2 петли:

def overlapping(a,b): 
    for char1 in a: 
     for char2 in b: 
      if char1 == char2: return True 
    return False 

Но решение с наборами намного лучше.

+0

Это хорошо работает! Благодарю. Набор() тоже хорош, но поскольку требуются вложенные петли, я не могу использовать set() – Gusto

0

Возврат завершает функцию сразу же после ее выполнения. Поскольку это домашнее задание, вы должны определить рабочее решение самостоятельно. Вы можете использовать набор.

2

Вы должны использовать == и не in оператор

def overlapping(list_a,list_b): 
    for char_in_list_a in list_a: 
     for char_in_list_b in list_b: 
      if char_in_list_a == char_in_list_b: 
       return True 
    return False 

Если вы хотите что-то с помощью набора:

def overlapping(a,b): 
     return bool(set(a) & set(b)) 
+0

Тот, с которым я бы пошел, если бы это был мой код, но, к сожалению, назначение требует вложенных циклов. – delnan

+0

Um, добавленный код неправильный, по самой причине raceCh- names ... – delnan

+0

Это вернет True, только если [0] == b [0] и False в каждом другом случае. – Klark

Смежные вопросы