如何在列表理解中不向列表中添加任何内容?

How can I add nothing to the list in list comprehension?

我正在 Python 中写一个列表理解:

[2 * x if x > 2 else add_nothing_to_list for x in some_list]

我需要 "add_nothing_to_list" 部分(逻辑的 else 部分)完全是空的。

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

只要把条件移到最后

[2 * x for x in some_list if x > 2]

引用 List Comprehension documentation,

A list comprehension consists of brackets containing an expression followed by a for clause, then zero or more for or if clauses. The result will be a new list resulting from evaluating the expression in the context of the for and if clauses which follow it.

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

这个理解可以理解,像这样

result = []
for x in some_list:
    if x > 2:
        result.append(x)