You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python二维数组赋值报IndexError列表索引超出范围错误如何解决?

问题原因分析
  • 核心错误是你初始化的B是空列表,Python的列表不支持自动为不存在的索引位置创建元素,你尝试直接给B[i*2][0]赋值时,B[i*2]这个外层索引对应的子列表本身就不存在,因此触发IndexError。
  • 即便你提前创建了外层的B列表,内层的子列表也需要先初始化才能通过索引赋值,否则同样会触发索引越界错误。
修复方案

方案1:使用append动态添加元素(最简洁)

直接按顺序构造每一行的子列表,追加到B中即可,代码如下:

A = [3, 4]
B = []

for i in range(len(A)):
    B.append([5, 6, 7])
    B.append([10, 10, 10])

运行后B即为你期望的[[5,6,7], [10,10,10], [5,6,7], [10,10,10]]。

方案2:预初始化矩阵结构后赋值

如果你需要保留通过索引赋值的写法,可以先提前创建好对应维度的初始矩阵,再修改对应位置的值:

A = [3, 4]
# 预初始化4行3列的矩阵,初始值可自定义
B = [[0]*3 for _ in range(len(A)*2)]

for i in range(len(A)):
    B[i*2][0] = 5
    B[i*2][1] = 6
    B[i*2][2] = 7

    B[i*2 +1][0] = 10
    B[i*2 +1][1] = 10
    B[i*2 +1][2] = 10

注意:预初始化二维列表时不要使用B = [[0]*3]*4的写法,该写法会生成4个指向同一个子列表的引用,修改任意一行都会同步修改所有行的内容。

内容的提问来源于stack exchange,提问作者Doron Raz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:06:06