二维数组双循环触发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
相关产品推荐
相关产品推荐

