如何追加到空列表的末尾?
我有一个列表:
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(…),不要使用其他列表来追加,因为列表是可变的。