Python foo=list、foo=[]和foo=list()之间的差异?

Python foo=list、foo=[]和foo=list()之间的差异?,python,list,Python,List,我是python新手,但一般不懂编程,也不太了解列表的情况。我在一个文本文件中有数千个测试集,每个测试集是256个,可以是不同的x,y点。我想做的是将测试集中的每个点存储到一个列表中,然后将每个列表存储到另一个列表中,有效地创建一个2D列表。我尝试过的三个选项中有两个是没有错误的,但我不知道不同的选项是什么意思,也不知道为什么我应该选择一个而不是另一个。 这与不同,因为这并不能解释其中哪些是列表,其他定义是什么 foo= list foo.append(1)#TypeError: descrip

我是python新手,但一般不懂编程,也不太了解列表的情况。我在一个文本文件中有数千个测试集,每个测试集是256个,可以是不同的x,y点。我想做的是将测试集中的每个点存储到一个列表中,然后将每个列表存储到另一个列表中,有效地创建一个2D列表。我尝试过的三个选项中有两个是没有错误的,但我不知道不同的选项是什么意思,也不知道为什么我应该选择一个而不是另一个。 这与不同,因为这并不能解释其中哪些是列表,其他定义是什么

foo= list
foo.append(1)#TypeError: descriptor 'append' requires a 'list' object but received a 'int'

bar= []
bar.append(1)#no error

baz= list()
baz.append(1)#no error
第一个将foo设置为对象列表。正如您所发现的,这不是一个空列表。对象列表是内置类型。。。现在,您有了该类型的范围内别名。不能附加到类型;因此出现了错误消息

另外两种是将变量初始化为空列表的经典方法。中间的一个使用列表文字符号来构造列表,而最后一个使用列表类型对象作为函数来生成该类型的实例。

当您执行foo=list时,实际上是将foo分配给list的内置python对象。bar=list和baz=[]都会启动两个新变量作为新的空列表。但是在python中,与var=list相比,var=list赋值要快一些。

这是因为foo=list使foo成为列表类型的别名。该行中未实例化任何实际的列表对象。但是,如果您有一个列表对象,可以使用list.append或foo.append向其进行追加

像这样:

foo = list
bar = [1]

list.append(bar, 2)
# bar is now [1, 2]

foo.append(bar, 3)
# bar is now [1, 2, 3]
由于示例代码仅使用一个参数将foo.append调用为int,因此异常会抱怨它需要一个列表而不是int

注意:这不是list类的特殊功能。所有实例方法都可以两种形式调用:some_object.funca、b、c或SomeType.funcsome_object、a、b、c