所以我有一个元组列表,每个元组有 3 个元素。第二个和第三个元素都是整数。对于值 n,我需要返回所有包含 n 作为第二个或第三个元素的元组。
不幸的是,我不完全确定如何做到这一点。我敢肯定它并不太复杂,但是尽管有一些类似的问题,但我找不到任何适合这个确切问题的问题。有谁知道该怎么做?
谢谢
所以我有一个元组列表,每个元组有 3 个元素。第二个和第三个元素都是整数。对于值 n,我需要返回所有包含 n 作为第二个或第三个元素的元组。
不幸的是,我不完全确定如何做到这一点。我敢肯定它并不太复杂,但是尽管有一些类似的问题,但我找不到任何适合这个确切问题的问题。有谁知道该怎么做?
谢谢
您应该能够通过简单的列表理解来做到这一点。就像是:
[t for t in list_of_tuples if t[1] == n or t[2] == n]
使用具有简单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)]
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
使用了现有的元组。