Сравнивать элементы между кортежем и списком? - PullRequest
0 голосов
/ 07 ноября 2018

Я сравниваю между кортежем и списком кортежей. Мне нужно вывести общие элементы в списке.

Предположим, у меня есть кортеж k1= ((91, 25),(94, 27),(100, 22)) и список k2 = [(1,2), (4, 2), (100, 22)]. Как сравнить элементы в k1 и k2 и получить список общих элементов?

Ожидаемый результат для приведенного выше примера:

[(100, 22)]

Ответы [ 5 ]

0 голосов
/ 07 ноября 2018

Вы можете использовать filter Функция

k1 = ((91, 25),(94, 27),(100, 22))
k2 = [(1,2), (4, 2), (100, 22)]
print filter(lambda x: x in k1,k2)

Результат:

[(100, 22)]
0 голосов
/ 07 ноября 2018

Или:

print([i for i in b if i not in (set(a)^set(b))])

^ оператор + list comprehension для получения противоположных значений.

Или еще лучше:

print(set(a)&set(b))

Рекомендую, это самое короткое

0 голосов
/ 07 ноября 2018

Вы можете использовать набор пересечения:

set(k1).intersection(k2)

Возвращает:

{(100, 22)}
0 голосов
/ 07 ноября 2018
[i for i in k1 if i in k2]

Вы можете использовать простое понимание списка, чтобы перебирать каждый кортеж в списках и сравнивать их оттуда

0 голосов
/ 07 ноября 2018

Для этого вы можете использовать простое понимание списка,

common_items = [item1 for item1 in list(k1) for item2 in k2 if item1 == item2]

Вот вывод,

>>> common_items

[(100, 22)]
...