更多有关python列表理解语法的信息。我有一个列表推导,它产生给定范围的奇数列表:
[x for x in range(1, 10) if x % 2]
这构成了一个过滤器-我有一个源列表,其中删除了偶数(if x % 2)。我想在这里使用if-then-else之类的东西。以下代码失败:
if x % 2
>>> [x for x in range(1, 10) if x % 2 else x * 100] File "<stdin>", line 1 [x for x in range(1, 10) if x % 2 else x * 100] ^ SyntaxError: invalid syntax
有一个类似if-else的python表达式:
1 if 0 is 0 else 3
如何在列表理解中使用它?
x if y else z是您要为每个元素返回的表达式的语法。因此,您需要:
x if y else z
[ x if x%2 else x*100 for x in range(1, 10) ]
混淆是由于您在第一个示例中使用 过滤器 而在第二个示例中没有使用 过滤器 。在第二个示例中,您仅使用三元运算符表达式 将 每个值 映射 到另一个。
使用过滤器,您需要:
[ EXP for x in seq if COND ]
没有过滤器,您需要:
[ EXP for x in seq ]
在第二个示例中,该表达式是一个“复杂”表达式,其中恰好包含一个if-else。
if-else