根据列表中成员的可用性过滤元组列表

时间:2011-09-28 08:02:43

标签: python list tuples list-comprehension

我想使用像[(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)没有17,因此会被删除。

我可以为此编写一个综合功能。但是如果可能的话,我正在寻找一个简短的列表理解。

感谢。

2 个答案:

答案 0 :(得分:8)

>>> 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)]

答案 1 :(得分:2)

试试这个:

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)]