所以我有一个元组列表,每个元素有3个元素。第二个和第三个元素都是整数。对于值n,我需要将包含n的所有元组作为第二个或第三个元素返回。
不幸的是,我不完全确定如何做到这一点。我确定它不是太复杂,但是虽然有一些类似的问题,但我找不到任何这个确切的问题。有谁知道怎么回事?
由于
答案 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
使用现有的元组。