我正在用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
保持不变。这可以是编写通用代码的有用功能。
答案 0 :(得分:13)
将条件移至最后
[2 * x for x in some_list if x > 2]
引用List Comprehension documentation,
列表理解由包含表达式后跟
for
子句,然后是零个或多个for
或if
子句的括号组成。结果将是通过在其后面的for
和if
子句的上下文中评估表达式而得到的新列表。
在这种情况下,表达式为2 * x
,然后是for
语句for x in some_list
,后跟if
语句if x > 2
。
这种理解可以理解,就像这样
result = []
for x in some_list:
if x > 2:
result.append(x)