为什么这个迭代的列表增长代码会给出 IndexError: list assignment index out of range?如何重复向列表中添加元素?

新手上路,请多包涵

我尝试编写一些代码,例如:

 i = [1, 2, 3, 5, 8, 13]
j = []
k = 0

for l in i:
    j[k] = l
    k += 1

但是我收到一条错误消息,上面写着 IndexError: list assignment index out of range ,指的是 j[k] = l 代码行。为什么会出现这种情况?我该如何解决?

原文由 Vladan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 740
2 个回答

j 是一个空列表,但您正在尝试写入元素 [0] 在第一次迭代中,该元素尚不存在。

请尝试以下操作,将新元素添加到列表末尾:

 for l in i:
    j.append(l)

当然,如果您只想复制现有列表,那么您在实践中永远不会这样做。你只需这样做:

 j = list(i)

或者,如果您想像使用其他语言中的数组一样使用 Python 列表,那么您可以预先创建一个列表,并将其元素设置为空值( None 在下面的示例中),然后,覆盖特定位置的值:

 i = [1, 2, 3, 5, 8, 13]
j = [None] * len(i)
#j == [None, None, None, None, None, None]
k = 0

for l in i:
   j[k] = l
   k += 1

要意识到的是, list 对象不允许您为不存在的索引分配值。

原文由 Steve Mayne 发布,翻译遵循 CC BY-SA 4.0 许可协议

您的另一个选择是初始化 j

 j = [None] * len(i)

原文由 Rsh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题