Python循环遍历三维数组触发IndexError索引越界错误排查
问题描述
现有一个三维列表,需要提取指定元素,本示例预期打印输出6、9、20,但运行代码时Python抛出IndexError: list index out of range错误。
错误实现代码如下:
values = [ [[0, 6], [0, 9], [0, 20]], [[1, 2], [1, 4], [1, 9 ]]] i=0 for j in range(0,len(values[i])): print(values[i][i][j])
单独执行print(values[0][0][1])语句可正常运行,能正确输出结果6,不清楚循环中的代码哪里编写有误导致报错。
错误原因
索引层级逻辑写错了:
- 代码中
i固定为0,j的循环范围是len(values[i])也就是3,因此j会依次取0、1、2三个值 - 循环内写的
values[i][i]等价于values[0][0],对应的是长度为2的列表[0, 6],它的合法索引只有0和1 - 当j循环到2时,尝试访问
[0,6][2],自然会触发索引越界错误 - 就算不触发越界,这个写法也始终在访问第一个二级子列表
[0,6]的元素,根本取不到后面的9和20
修复代码
你需要遍历i=0下的所有二级子列表,取每个二级子列表索引为1的元素即可,修改后代码如下:
values = [ [[0, 6], [0, 9], [0, 20]], [[1, 2], [1, 4], [1, 9]] ] i = 0 for j in range(len(values[i])): print(values[i][j][1])
运行后输出结果符合预期:
6 9 20
内容的提问来源于stack exchange,提问作者user19539780
相关产品推荐
相关产品推荐

