我有一个清单:
list1=[]
列表的长度不确定,因此我尝试将对象追加到list1的末尾,如下所示:
for i in range(0, n):
list1=list1.append([i])
但是我的输出始终显示此错误:AttributeError:'NoneType'对象没有属性'append'
这是因为list1从一个空列表开始吗?如何解决此错误?
Answers:
append实际更改列表。同样,它需要一个item,而不是一个列表。因此,您所需要做的就是
for i in range(n):
list1.append(i)
(请注意range(n),在这种情况下,您可以使用。)
我认为您的实际使用更为复杂,但是您也许可以使用列表推导,这对于它来说更Python化:
list1 = [i for i in range(n)]
或者,在这种情况下,range(n)实际上在Python 2.x中已经创建了您想要的列表,尽管在Python 3.x中,您需要list(range(n))。
append会添加到最外面的列表,但是您可以通过建立索引来a[-1].append(3)将其添加3到嵌套列表中:附加到的最后一个子列表中a。
append返回None,因此在第二次迭代中,您正在调用appendNoneType的方法。只需删除任务:
for i in range(0, n):
list1.append([i])
我个人更喜欢+操作员append:
for i in range(0, n):
list1 += [[i]]
但这每次都会创建一个新列表,因此如果性能至关重要,则可能不是最佳列表。
请注意,您还可以使用insert来将数字放入列表中的所需位置:
initList = [1,2,3,4,5]
initList.insert(2, 10) # insert(pos, val) => initList = [1,2,10,3,4,5]
还要注意,在python中,您始终可以使用len()方法获得列表长度