2017-01-04 2 views
0

Я пытаюсь построить функцию для проверки 2 списков кортежей и вернуть True, если хотя бы один из кортежей находится в другом списке:Проверка наличия хотя бы 1 кортежа в другом списке кортежей в python

def g32(x, y): 

    for i in range(len(x)): 
     for j in range(len(y)): 
      if x[i] in y[j]: 
       return True 
    return False 

g32([(3,5),(2,8)] , [(6,5),(3,5),(7,2)]) 
False 

Ожидается Истина, поскольку (3,5) есть в обоих списках, идеях? Благодаря

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

ответ

1

Если вы используете оператор in в кортеже, он будет возвращать элементы этого , В вашем случае вы будете сравнивать: if (3, 5) in 3: и if (3, 5) in 5:, в каждом случае возвращается False.

Должно быть польза:

def g32(x, y): 
    for i in range(len(x)): 
     if x[i] in y: 
      return True 
    return False 

print(g32([(3,5),(2,8)] , [(6,5),(3,5),(7,2)])) 

Выход:

True 

Предложение:

def g32(x, y): 
    for X in x: 
     if X in y: 
      return True 
    return False 

Если есть изменение порядка:

def g32(x, y): 
    for X in x: 
     if X in y: 
      return True 
     if (X[1], X[0]) in y: 
      return True 

    return False 

print(g32([(3,5),(2,7),(4,4),(8,3)] , [(6,5),(3,3),(7,2)])) 

Выход:

True 
+0

Будет ли первая работа, если список у больше, то х один? Также я забыл упомянуть, что некоторые из них могут переключаться следующим образом: [(3,5), (2,7), (4,4), (8,3)], [(6,5) , (3,3), (7,2)], в которых (2,7) и (7,2) следует оценить True – stasisOo

+0

@stasisOo Ответ на первый вопрос: да. – eyllanesc

+0

@stasisOo Если мой ответ поможет вам пометить его как правильно, пожалуйста. – eyllanesc

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