fer*_*rdy 2 python initialization list
我只是对以下代码片段不起作用感到好奇,该代码片段应初始化一个空列表,并在运行时追加一个初始值。第二个片段正在工作。它出什么问题了?是否有进行此类初始化的最佳实践?
>>> foo = [].append(2)
>>> print foo
None
>>> foo = []
>>> foo.append(2)
>>> print foo
[2]
Run Code Online (Sandbox Code Playgroud)
编辑:似乎我对语法有误解。如下面已经指出的,append总是返回None作为结果值。我首先想到的是[]将返回一个空的列表对象,在该对象的附加项中应添加第一个元素,然后将该列表分配给foo。错了
您不能执行以下任一操作的实际原因,
l = [].append(2)
l = [2,3,4].append(1)
Run Code Online (Sandbox Code Playgroud)
是因为.append()始终将返回None作为函数返回值。.append()是要就地完成的。
有关数据结构的文档,请参见此处。总而言之,如果要初始化列表中的值,请执行以下操作:
l = [2]
Run Code Online (Sandbox Code Playgroud)
如果要初始化在函数/操作中使用的空列表,请执行以下操作:
l = []
for x in range(10):
value = a_function_or_operation()
l.append(value)
Run Code Online (Sandbox Code Playgroud)
最后,如果您确实想要像那样进行求值,请像这样l = [2,3,4].append()使用+运算符:
l1 = []+[2]
l2 = [2,3,4] + [2]
print l1, l2
>>> [2] [2, 3, 4, 2]
Run Code Online (Sandbox Code Playgroud)
通常,这是初始化列表的方式。
| 归档时间: |
|
| 查看次数: |
20749 次 |
| 最近记录: |