将值附加到空列表的最佳实践
Best practice to append value to an empty list
我只是对以下无法运行的代码片段感到好奇,它应该初始化一个空列表并即时附加一个初始值。第二个片段正在工作。它出什么问题了?是否有此类初始化的最佳实践?
>>> foo = [].append(2)
>>> print foo
None
>>> foo = []
>>> foo.append(2)
>>> print foo
[2]
编辑:看来我对语法有误解。正如下面已经指出的,始终附加 returns None 作为结果值。我首先想到的是 [] 将 return 一个空列表对象,其中追加应该将第一个元素放入其中,然后将列表分配给 foo。那是错误的。
您不能执行以下任一操作的实际原因,
l = [].append(2)
l = [2,3,4].append(1)
是因为.append()
总是returns None
作为函数return值。 .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]
这通常是您初始化列表的方式。
我只是对以下无法运行的代码片段感到好奇,它应该初始化一个空列表并即时附加一个初始值。第二个片段正在工作。它出什么问题了?是否有此类初始化的最佳实践?
>>> foo = [].append(2)
>>> print foo
None
>>> foo = []
>>> foo.append(2)
>>> print foo
[2]
编辑:看来我对语法有误解。正如下面已经指出的,始终附加 returns None 作为结果值。我首先想到的是 [] 将 return 一个空列表对象,其中追加应该将第一个元素放入其中,然后将列表分配给 foo。那是错误的。
您不能执行以下任一操作的实际原因,
l = [].append(2)
l = [2,3,4].append(1)
是因为.append()
总是returns None
作为函数return值。 .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]
这通常是您初始化列表的方式。