正确使用列表推导 - python

ils*_*tam 11 python list-comprehension

通常,列表推导用于从现有列表中导出新列表.例如:

>>> a = [1, 2, 3, 4, 5]
>>> [i for i in a if i > 2]
[3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

我们应该用它们来执行其他程序吗?例如:

>>> a = [1, 2, 3, 4, 5]
>>> b = []
>>> [b.append(i) for i in a]
[None, None, None, None, None]
>>> print b
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

或者我应该避免上述内容而是使用以下内容?:

for i in a:
    b.append(i)
Run Code Online (Sandbox Code Playgroud)

小智 10

你应该避免使用列表推导(以及字典理解,设置理解和生成器表达式)来产生副作用.除了他们积累虚假名单并因此浪费记忆这一事实之外,它也令人困惑.我期望列表理解能够生成(有意义的)值,许多人会同意.另一方面,循环显然是一系列陈述.预计它们会产生副作用并且不产生任何结果值 - 毫不奇怪.