使用单行for循环python附加到空列表

时间:2015-01-29 04:45:16

标签: list python-3.x append

我正在尝试使用单行for循环将数字从生成器附加到空列表,但它返回None。我理解它可以使用2行的for循环完成,但我想知道我缺少什么。即,

>>> [].append(i) for i in range(10)

[None, None, None, None, None, None, None, None, None, None]

我希望在一行中创建它:

>>> [].append(i) for i in range(10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

谢谢。

3 个答案:

答案 0 :(得分:11)

写一个正确的理解,不附加。

>>> [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(i for i in range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

答案 1 :(得分:0)

您还可以仅投射一个可迭代的范围:

list(range(10))
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

也适用于numpy用户:

np.arange(10)
>>> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

或者如果您更了解linspace(linspace(from,to,pieces)),则可以使用linspace:

np.linspace(0,9,10)
>>> array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])

答案 2 :(得分:0)

添加对发生的事情的解释, Append 不返回任何内容,

y = []
x = [y.append(i) for i in range(10)]
print(x)
print(y)

生产

[None, None, None, None, None, None, None, None, None, None]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[Program finished]