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

时间:2015-03-21 06:22:15

标签: python list 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保持不变。这可以是编写通用代码的有用功能。

1 个答案:

答案 0 :(得分:13)

将条件移至最后

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

引用List Comprehension documentation

  

列表理解由包含表达式后跟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)