Python:检查列表中特定子元素的“is in”

时间:2017-04-26 19:26:39

标签: python list-comprehension

我有以下格式的元组列表:

list = [(var1, var2, var3). (var1, var2, var3), ...]

是否可以构建if var is in list语句,仅检查var个插槽中是否有var3

例如,给出以下列表:

list = [(1, 2, 3), (7, 8, 9)]

我希望能够检查if var is in List以便var == 3成立,但如果var == 2则为真,因为它只检查 每个元组中的具体位置

3 个答案:

答案 0 :(得分:4)

您可以使用内置的any

>>> lst = [(1, 2, 3), (7, 8, 9)]
>>> any(v3==3 for *_, v3 in lst)
True

一旦找到匹配项就会短路,因此您无需遍历整个列表。

可以扩展到Python 2(因为扩展解包不起作用):

any(v3==3 for _, _, v3 in lst)

答案 1 :(得分:3)

您可以使用以下技巧获取所有var1值的列表,所有var2值的列表以及所有var3值的列表:

var1s, var2s, var3s = zip(*list)

然后,您只需检查if var is in var3s

答案 2 :(得分:2)

您可以使用:

if any(x[2] == var for x in l)

(p.s:不要为变量list命名,因为你覆盖了内置类型)