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

二维数组双循环触发IndexError: list index out of range的原因与解决

解决Python二维数组IndexError:列表索引越界问题

咱们先看看你写的出问题的代码:

N=7
F=2
ar=[]
for i in range(N):
    for j in range(F+1):
        ar[i][j]=1
print(ar)

运行这段代码时触发了:

IndexError: list index out of range

为啥会报错?

问题出在数组初始化这一步!你一开始把ar定义成了空列表[],但Python里的列表没法直接通过索引去给不存在的位置赋值。当循环里执行ar[i][j] = 1时,ar里连一行元素都没有,ar[i]这个位置根本不存在,自然就会抛出索引越界的错误啦。简单说就是:你得先把数组的“架子”搭好,给每个位置都填上默认值,之后才能去修改这些位置的内容。

正确的写法

下面是能正常运行的代码,咱们一步步看:

N=7
F=2
# 初始化一个7行2列的数组,默认值为0
ar=[[0]*F for x in range(N)]
# 给初始化好的数组赋值
for i in range(N):
    for j in range(F):
        ar[i][j]=int(input())
print(ar)

这里用[[0]*F for x in range(N)]做初始化是关键:

  • 外层循环range(N)创建N个独立的子列表
  • 每个子列表[0]*F生成F个初始为0的元素,这样就搭好了N行F列的数组架子,之后再通过ar[i][j]赋值就不会有索引问题了。

内容的提问来源于stack exchange,提问作者Fairoos Ok

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:18:21