在Python中附加到列表理解将返回None

Sco*_*McC 5 python list-comprehension python-3.x

这是出于好奇而不是试图将其用于实际目的的问题。

考虑一下我有以下简单示例,其中我通过列表理解生成列表:

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

但是,如果我尝试一次完成所有操作

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

结果返回None。有什么理由吗?

我以为这样的动作会返回第一个示例中的答案,或者抛出错误。

供参考,我使用的是Python 3.6.5

blh*_*ing 5

append 仅适用于变量,不适用于列表文字,因为它会更新列表对象本身,并且不返回结果列表。

正如@Tomalak提到的,在简单列表上运行类似的操作也会返回 None

>>> [1, 2, 3].append(4) == None
True
Run Code Online (Sandbox Code Playgroud)


Nid*_*eev 5

您可以使用串联+而不是append在列表理解中

In [1]: a = [1, 2, 3]

In [2]: b = [2 * i for i in a] + [a]

In [3]: b
Out[3]: [2, 4, 6, [1, 2, 3]]
Run Code Online (Sandbox Code Playgroud)