【发布时间】:2015-08-21 05:55:29
【问题描述】:
我只是对以下代码片段不工作感到好奇,它应该初始化一个空列表并即时附加一个初始值。第二个片段正在工作。它出什么问题了?这种初始化有最佳实践吗?
>>> foo = [].append(2)
>>> print foo
None
>>> foo = []
>>> foo.append(2)
>>> print foo
[2]
编辑:似乎我对语法有误解。正如下面已经指出的,append 总是返回 None 作为结果值。我首先想到的是 [] 将返回一个空列表对象,其中追加应将第一个元素放入其中,然后将列表分配给 foo。那是错误的。
【问题讨论】:
-
那么为什么不直接使用
foo = [2]呢?当您可以直接指定初始值时,根本不需要调用append。list.append()就地更改列表,因此始终返回None。 -
您要打印的是
[].append(2)而不是foo本身。foo = [2]或foo = []; foo.append(2)可以。 -
@raymelfrancisco 感谢您回答我的简单问题。我无法解释,为什么这必须被否决。有些人可能已经通过母乳喂养获得了知识。谢谢。
-
我认为他的问题实际上是在问为什么你不能像
foo =[].append(2)这样的理论操作,因为正常这样做显然没有意义。
标签: python list initialization