如何追加到空列表的末尾?

我有一个列表:

list1=[] 

列表的长度是不确定的,所以我试图将对象追加到list1的末尾像这样:

 for i in range(0, n): list1=list1.append([i]) 

但我的输出不断给这个错误:AttributeError:'NoneType'对象没有属性'追加'

这是因为list1作为一个空列表开始? 我该如何解决这个错误?

append其实名单。 此外,它需要一个项目 ,而不是一个列表。 因此,所有你需要的是

 for i in range(n): list1.append(i) 

(顺便提一句,请注意,在这种情况下,您可以使用range(n) 。)

我假设你的实际使用比较复杂,但是你也许可以使用一个列表理解,对于这个更加pythonic:

 list1 = [i for i in range(n)] 

或者,在这种情况下,Python 2.x range(n)实际上创build了你想要的列表,尽pipe在Python 3.x中,你需要list(range(n))

您不需要赋值运算符。 追加返回None。

米科拉有正确的答案,但多一点解释。 它会首次运行,但是因为append返回None ,在for循环的第一次迭代之后,您的赋值将导致list1等于None ,因此在第二次迭代中抛出错误。

append返回None,所以在第二次迭代中你要调用NoneType的方法append 。 只要删除作业:

 for i in range(0, n): list1.append([i]) 

我个人更喜欢+操作符比append

 for i in range(0, n): list1 += [[i]] 

但是,这是每次创build一个新的列表,所以如果性能是至关重要的可能不是最好的。

像Mikola说的那样, append()返回一个void,所以每一次迭代你都将list1设置为一个非types,因为append返回一个非types。 在下一次迭代中,list1为null,因此您试图调用null的append方法。 空没有方法,所以你的错误。

请注意,您也可以使用插入,以便将数字放入列表中的所需位置:

 initList = [1,2,3,4,5] initList.insert(2, 10) # insert(pos, val) => initList = [1,2,10,3,4,5] 

另外请注意,在Python中,你总是可以使用方法len()获得一个列表长度

使用my_list.append(…),不要使用其他列表来追加,因为列表是可变的。