如何在列表推导中向列表中添加任何内容?

den*_*var 9 python list-comprehension list

我正在用Python编写列表理解:

[2 * x if x > 2 else add_nothing_to_list for x in some_list]
Run Code Online (Sandbox Code Playgroud)

我需要"add_nothing_to_list"部分(逻辑的else部分)实际上什么都不是.

Python有办法做到这一点吗?特别是,有没有办法说a.append(nothing)哪个会a保持不变.这可以是编写通用代码的有用功能.

the*_*eye 16

只需将条件移至最后

[2 * x for x in some_list if x > 2]
Run Code Online (Sandbox Code Playgroud)

引用列表理解文档,

列表推导由括号组成,括号包含一个表达式后跟一个for子句,然后是零个或多个forif子句.结果将是一个新的列表,该列表是通过在其后面的forif子句的上下文中评估表达式而得到的.

在这种情况下,表达式是2 * x一个for语句for x in some_list,然后是一个if语句,if x > 2.

这种理解可以像这样理解

result = []
for x in some_list:
    if x > 2:
        result.append(x)
Run Code Online (Sandbox Code Playgroud)