单行列表理解:if-else变体

更多有关python列表理解语法的信息。我有一个列表推导,它产生给定范围的奇数列表:


[x for x in range(1, 10) if x % 2]

这构成了一个过滤器-我有一个源列表,其中删除了偶数(if x % 2)。我想在这里使用if-then-else之类的东西。以下代码失败:


>>> [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

如何在列表理解中使用它?


交互式爱情
浏览 130回答 3
3回答

森栏

x if y else z是您要为每个元素返回的表达式的语法。因此,您需要:[&nbsp;x&nbsp;if&nbsp;x%2&nbsp;else&nbsp;x*100&nbsp;for&nbsp;x&nbsp;in&nbsp;range(1,&nbsp;10)&nbsp;]混淆是由于您在第一个示例中使用了过滤器而在第二个示例中没有使用过滤器而引起的。在第二个示例中,您仅使用三元运算符表达式将每个值映射到另一个。使用过滤器,您需要:[&nbsp;EXP&nbsp;for&nbsp;x&nbsp;in&nbsp;seq&nbsp;if&nbsp;COND&nbsp;]没有过滤器,您需要:[&nbsp;EXP&nbsp;for&nbsp;x&nbsp;in&nbsp;seq&nbsp;]在第二个示例中,该表达式是一个“复杂”表达式,其中恰好包含一个if-else。

动漫人物

[x&nbsp;if&nbsp;x&nbsp;%&nbsp;2&nbsp;else&nbsp;x&nbsp;*&nbsp;100&nbsp;for&nbsp;x&nbsp;in&nbsp;range(1,&nbsp;10)&nbsp;]

慕的地10843

您也可以使用列表理解来做到这一点:A=[[x*100,&nbsp;x][x&nbsp;%&nbsp;2&nbsp;!=&nbsp;0]&nbsp;for&nbsp;x&nbsp;in&nbsp;range(1,11)] print&nbsp;A
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python