0

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

不幸的是,我不完全确定如何做到这一点。我敢肯定它并不太复杂,但是尽管有一些类似的问题,但我找不到任何适合这个确切问题的问题。有谁知道该怎么做?

谢谢

4

3 回答 3

3

您应该能够通过简单的列表理解来做到这一点。就像是:

[t for t in list_of_tuples if t[1] == n or t[2] == n]
于 2013-03-14T23:28:00.433 回答
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)]
于 2013-03-14T23:27:43.987 回答
0
blist = [tup for tup in alist if n in tup[1:]]

上面的行使用列表推导,相当于:

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

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

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

于 2013-03-14T23:51:52.600 回答