python - if/else/if 可能在列表理解中吗?

标签 python list-comprehension

我想知道是否可以使用 if/else 的列表推导式,它不需要生成与长度相同的列表正在处理的列表? (即没有最后的 else)

>>> L = [0, 1, 2, 3, 4, 5, 6]
>>> [v * 10 if v < 3 else v * 2 if v > 3 else v for v in L] #if/else/if/else
[0, 10, 20, 3, 8, 10, 12]

工作正常。但是假设我想省略 3,得到:

[0, 10, 20, 8, 10, 12]  # No number 3

我原以为这会起作用:

>>> [v * 10 if v < 3 else v * 2 if v > 3 for v in L] #if/else/if

但这是一个语法错误..

所以我认为“也许”这会起作用:

>>> [v * 10 if v < 3 else v * 2 if v > 3 else pass for v in L] #if/else/if/else pass

但事实并非如此

这是一个好奇的问题,我意识到这不一定是上述处理的最可读/最合适的方法。

我错过了什么吗?可以吗? (我在 python 2.6.5 上)

最佳答案

是的,这是可能的:

[foo for foo in bar if foo.something]

或者在你的情况下:

[v * 10 if v < 3 else v * 2 for v in L if v != 3]

the docs 中也提到了我.

关于python - if/else/if 可能在列表理解中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9736991/

相关文章:

python - 将列表拆分为不均匀的元组

Python 散点图 : Changing color based on both X and Y values

python - 打印语句不会出现在带有日志记录模块的控制台上

python - 用列表理解替换一周内的 for 循环

python - 在 python 列表理解中解包元组(不能使用 *-operator)

python - 在 Python 循环中构建字典 - 列表和字典理解

python - 访问列表会改变其引用计数吗?

python - Pandas:如何加载包含多个 txt 文件的 zip 文件?

python - Numpy 数组多维索引与列表 IndexError : shape mismatch

python - 我有一个 for 循环来创建一个列表,我可以改用列表理解吗?