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

Python动态嵌套数组实现报错:IndexError: list index out of range

Python动态嵌套数组实现报错:IndexError: list index out of range

嘿,我来帮你排查这个问题~

你遇到的IndexError根源在于数组初始化的方式不对。咱们先看你原代码里的这一行:

ar = [[]]

这行代码只创建了一个包含单个空列表的一维数组,而不是你想要的rows行的二维数组。

当循环执行到i=1(也就是第二行)的时候,你尝试访问ar[i],但此时ar里只有ar[0]这一个元素,自然就会抛出“索引越界”的错误。而且就算是i=0的第一次循环,ar[0]是空列表,你直接赋值ar[0][j] = i+j也会报错,因为空列表里根本没有第j个位置可以赋值。

修正方案

这里给你两种靠谱的实现方式:

方式一:分步初始化+填充

先创建包含rows个独立空列表的数组,再通过append逐个添加元素:

def pop_array(rows, cols):
    ar = [[] for _ in range(rows)]  # 初始化rows个独立的空列表
    for i in range(rows):
        for j in range(cols):
            ar[i].append(i + j)  # 向每行的列表中添加元素
    return ar

rows = 3
cols = 4
result = pop_array(rows, cols)
print(result)

方式二:用列表推导式(更简洁)

Python的列表推导式可以一行搞定二维数组的创建和填充,可读性也很强:

def pop_array(rows, cols):
    return [[i + j for j in range(cols)] for i in range(rows)]

rows = 3
cols = 4
result = pop_array(rows, cols)
print(result)

注意避坑

别用ar = [[]] * rows这种方式初始化,这会让所有行都指向同一个空列表的引用——修改任意一行的元素,其他行都会跟着变,这肯定不是你想要的结果。

运行修正后的代码,你会得到预期的二维数组:

[[0, 1, 2, 3], [1, 2, 3, 4], [2, 3, 4, 5]]

备注:内容来源于stack exchange,提问作者LuminaNtb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 09:38:12