Python定义2D list时出现IndexError索引越界错误的原因是什么
Python 2D列表IndexError错误原因分析
你提供的出错代码如下:
rows = 7 cols = 6 mat = [] for i in range(cols): col = [] for j in range(rows): col.append(0) mat.append(col) for i in range(cols): for j in range(rows): print(mat[j]) print('\n')
错误产生的核心原因是索引访问超出了列表的合法范围,具体拆解如下:
- 构造
mat时,外层循环执行cols = 6次,因此mat本身的长度为6,合法正索引范围是0 ~ 5。 - 打印逻辑中内层循环遍历
range(rows = 7),循环变量j的取值会到6,此时执行mat[j]相当于访问mat[6],已经超出了mat的最大合法索引,因此触发IndexError: list index out of range。 - 额外说明:你的代码同时存在行列逻辑混淆的问题,当前构造的
mat每个元素对应一列数据,长度为7;如果要实现常规的按行遍历2D列表的逻辑,可调整构造或打印逻辑,参考修复示例:
# 修复示例1:匹配当前构造逻辑的打印方式 for col_idx in range(cols): print(mat[col_idx]) # 修复示例2:调整为常规行优先的2D列表构造+打印 rows = 7 cols = 6 mat = [[0 for _ in range(cols)] for _ in range(rows)] for row in mat: print(row)
内容的提问来源于stack exchange,提问作者Dr. Erfox
相关产品推荐
相关产品推荐

