Фильтрация списка кортежей на основе наличия члена в списке - PullRequest
3 голосов
/ 28 сентября 2011

Я хочу отфильтровать список кортежей типа [(1,22,1),(5,1,8),(8,3,4),(7,5,6)], используя список типа [1,7], что в конечном итоге даст мне результат [(1,22,1),(5,1,8),(7,5,6)];поскольку (8,3,4) не имеет ни 1, ни 7, оно исключается.

Я могу написать для этого исчерпывающую функцию.Но я ищу краткий список понимания, если это возможно.

Спасибо.

Ответы [ 2 ]

8 голосов
/ 28 сентября 2011
>>> tup_list = [(1,22,1),(5,1,8),(8,3,4),(7,5,6)]
>>> filter_list = [1,7]
>>> [tup for tup in tup_list if any(i in tup for i in filter_list)]
[(1, 22, 1), (5, 1, 8), (7, 5, 6)]
2 голосов
/ 28 сентября 2011

попробуйте с этим:

items = [(1,22,1),(5,1,8),(8,3,4),(7,5,6)]
result = [ item for item in items if (set([1,7]) & set(item))]

>>> [(1, 22, 1), (5, 1, 8), (7, 5, 6)]
...