我试图将对象重复附加到列表的末尾,如下所示:
list1 = []
n = 3
for i in range(0, n):
list1 = list1.append([i])
但我收到如下错误: AttributeError: 'NoneType' object has no attribute 'append'
。这是因为 list1 开始时是一个空列表吗?我该如何解决这个错误?
这个问题具体是关于如何解决问题并正确附加到列表中的。原代码中,报错是在使用循环时出现的,因为 .append
None
。 为什么 返回 None
(底层设计决策),请参阅 为什么这些列表操作返回 None,而不是结果列表? .
如果你有一个 IndexError
试图分配给一个刚好超过列表末尾的索引 - 那是行不通的;您需要 .append
方法。有关详细信息,请参阅 为什么此迭代列表增长代码会出现 IndexError:列表分配索引超出范围?如何重复向列表中添加元素? .
如果要多次附加 相同的 值,请参阅 Python:将项目附加到列表 N 次。
原文由 LostLin 发布,翻译遵循 CC BY-SA 4.0 许可协议
append
实际上 更改 了列表。此外,它需要一个 item ,而不是一个列表。因此,您只需要(顺便说一句,请注意,在这种情况下,您可以使用
range(n)
。)我假设你的实际使用更复杂,但你可以使用列表理解,这对这个更 pythonic:
或者,在这种情况下,在 Python 2.x 中
range(n)
实际上已经创建了您想要的列表,尽管在 Python 3.x 中,您需要list(range(n))
。