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
append 仅适用于变量,不适用于列表文字,因为它会更新列表对象本身,并且不返回结果列表。
正如@Tomalak提到的,在简单列表上运行类似的操作也会返回 None
>>> [1, 2, 3].append(4) == None
True
Run Code Online (Sandbox Code Playgroud)
您可以使用串联+而不是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)