【发布时间】:2013-06-23 15:43:32
【问题描述】:
更多的是关于 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
如何在列表推导中使用它?
【问题讨论】:
-
看它的价值,你有一个“列表理解”,而不是一个生成器。最终语法是相同的,只是生成器使用
()而不是[]。 -
我花了一段时间才明白为什么
if x % 2消除偶数(而不是保留它们)——这是因为x甚至是x % 2表达式结果为0,其结果为False,而除0之外的任何int的结果为True。
标签: python list-comprehension ternary-operator conditional-operator