2013-03-14 114 views
0

所以我有一個元組列表,每個元組都有3個元素。第二和第三個元素都是整數。對於值n,我需要返回所有包含n的元組作爲第二個或第三個元素。按Python中第n個元素搜索元組列表

不幸的是,我不完全確定如何做到這一點。我相信這不是太複雜,但雖然也有類似的問題,但我無法找到任何確切的問題。有誰知道如何去做這件事?

感謝

回答

3

你應該可以用一個簡單的列表理解來做到這一點。類似:

[t for t in list_of_tuples if t[1] == n or t[2] == n] 
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)] 
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使用了現有的元組。