将值附加到空列表的最佳做法

时间:2015-06-06 08:46:44

标签: python list initialization

我只是好奇以下代码片段不起作用,它应该初始化一个空列表并在运行中附加一个初始值。第二个片段正在运行。它有什么问题?这种初始化是否有最佳实践?

>>> foo = [].append(2)
>>> print foo
None
>>> foo = []
>>> foo.append(2)
>>> print foo
[2]
编辑:似乎我对语法有误解。正如下面已经指出的那样,append总是返回None作为结果值。我首先想到的是[]会返回一个空的列表对象,其中append应该在其中放置第一个元素,然后将列表分配给foo。那是错的。

1 个答案:

答案 0 :(得分:4)

您无法执行以下任一操作的实际原因,

l = [].append(2)
l = [2,3,4].append(1)

是因为.append()总是返回None作为函数返回值。 .append()意味着要到位。

有关数据结构的文档,请参阅here。总而言之,如果要初始化列表中的值,请执行以下操作:

l = [2]

如果要初始化要在函数/操作中使用的空列表,请执行以下操作:

l = []
for x in range(10):
    value = a_function_or_operation()
    l.append(value)

最后,如果您真的想要进行l = [2,3,4].append()之类的评估,请使用+运算符,如:

l1 = []+[2]
l2 = [2,3,4] + [2]
print l1, l2
>>> [2] [2, 3, 4, 2]   

这通常是您初始化列表的方式。