3

我有一个元组列表:

tuples = [(0,1), (2,0), (3,4), (1,2) etc. ]

我想创建另一个列表,其中包含与 0 配对的所有数字。我尝试使用列表理解来执行此操作:

relations = [x[1] if x[0] == 0 else x[0] if x[1] == 0 for x in tuples]

但是,这会产生错误。Python 似乎不喜欢 'x' 作为一个元组。可以用列表理解定义“关系”还是我需要写出更长的代码?

4

2 回答 2

6

你还需要一个else;每个条件表达式需要anif和 an else,您else从第二个条件表达式中省略了。

但是您的问题可以更简单地表示为:

relations = [x[0] or x[1] for x in tuples if 0 in x]

这首先过滤任何包含零的元组,然后选择不为 0 的值。

演示:

>>> tuples = [(0,1), (2,0), (3,4), (1,2)]
>>> [x[0] or x[1] for x in tuples if 0 in x]
[1, 2]
于 2013-06-30T22:10:03.870 回答
3

三元表达式需要一个 else 条件,这就是你得到那个错误的原因。

>>> [x[0] if x[1] ==0 else x[1] for  x in  tuples if 0 in x]
[1, 2]
于 2013-06-30T22:10:19.567 回答