如何在列表理解中不向列表中添加任何内容?
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)
我正在 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 morefor
orif
clauses. The result will be a new list resulting from evaluating the expression in the context of thefor
andif
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)