在Python中搜索第n个元素的元组列表

时间:2013-03-14 23:23:06

标签: python

所以我有一个元组列表,每个元素有3个元素。第二个和第三个元素都是整数。对于值n,我需要将包含n的所有元组作为第二个或第三个元素返回。

不幸的是,我不完全确定如何做到这一点。我确定它不是太复杂,但是虽然有一些类似的问题,但我找不到任何这个确切的问题。有谁知道怎么回事?

由于

3 个答案:

答案 0 :(得分:3)

您应该可以通过简单的列表理解来完成此操作。类似的东西:

[t for t in list_of_tuples if t[1] == n or t[2] == n]

答案 1 :(得分:1)

使用简单if条件的列表推导:

>>> lis=[('a',1,2),('b',2,2),('c',3,3),('d',3,1)]

>>> n=1

>>> [x for x in lis if n in x[1:3]]  #[1:3] returns a sublist containing 
                                     # 2 & 3 element of each tuple
[('a', 1, 2), ('d', 3, 1)]

答案 2 :(得分:0)

blist = [tup for tup in alist if n in tup[1:]]

上面一行使用list comprehension,相当于:

blist = []
for tup in alist:
    if n in tup[1:]:
        blist.append(tup)

tup[1:]返回一个新元组,由三个元组元组tup中的第二个和第三个项组成。

事后看来James Henstridge's示例似乎更可取,因为t[1] == n or t[2] == n使用现有的元组。