List.append()在列表中的循环下无法获得正确的输出

时间:2017-08-15 09:04:41

标签: python

通常我这样做:

a=[]
for x in range(5):
    a.append(x)
print(a)
# [0, 1, 2, 3, 4]

然后我将循环放在列表中

a=[]
L=[a.append(x) for x in range(5)]
print(L)
# [None, None, None, None, None]

我不知道它有什么问题......

2 个答案:

答案 0 :(得分:2)

此处的问题是,a.append(x)是列表a的一种方法,可以修改a。它返回None

有趣的是你得到了这个:

a=[]
L=[a.append(x) for x in range(5)]
print(L)
# [None, None, None, None, None]
print(a)
# [0, 1, 2, 3, 4]

请注意a已更新。但是,建议不要使用这样的列表推导来解决副作用,因为代码变得非常难以理解。

如果您想使用列表推导创建L,您应该这样做:

L = [x for x in range(5)]
print(L)
# [0, 1, 2, 3, 4]

最好的代码可能只是

L = list(range(5))
print(L)
# [0, 1, 2, 3, 4]

答案 1 :(得分:0)

那是因为x被添加到a而不是L.

BaseGameUtils