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

L形矩阵遍历代码出现索引越界错误,求快速修复方案

矩阵L形遍历的索引越界错误与输出异常

使用以下代码实现矩阵L形遍历,当输入行数n=3、列数m=9时,出现索引越界错误,同时实际输出与预期输出不符。

原代码

# Printing matrix in L shape
def traverseLshape(a, n, m):
    
    # for each column or each L shape
    for j in range(0, m):

        # traversing vertically
        for i in range(0, n - j):
            print(a[i][j], end = " ")

        # traverse horizontally
        for k in range(j + 1, m):
            print(a[n - 1 - j][k], end = " ")

# Driven Code
if __name__ == '__main__':
    n = 3
    m = 9
    a = [[0, 6, 3, 4, 4, 6 ,1, 4 ,1],
         [5, 4 ,0, 3, 4 , 6, 6, 3, 2],
         [4 ,3, 6, 3 ,2, 4, 2, 6, 5]]
    traverseLshape(a, n, m);

预期输出

0 5 4 3 6 3 2 4 2 6 5 6 4 0 3 4 6 6 3 2 3 4 4 6 1 4 1

实际输出

0 5 4 3 6 3 2 4 2 6 5 6 4 0 3 4 6 6 3 2 3 4 4 6 1 4 1 2 4 2 6 5 6 6 3 2 1 4 1

错误信息

IndexError: list index out of range

中文翻译:索引错误:列表索引超出范围


问题分析

原代码外层循环遍历了所有m列,但实际上当j >= n时,垂直遍历的范围range(0, n-j)会因n-j <=0无操作,同时水平遍历的行索引n-1-j会变为负数。当j增大到n-1-j < -n时(比如n=3,j=6时,n-1-j=-4),矩阵仅3行,负索引最多到-3,此时访问a[-4]就会触发索引越界。此外,多余的循环会重复遍历后续行,导致输出内容冗余。

修复后的代码

将外层循环限制为前n列(仅生成有效的L形):

# Printing matrix in L shape
def traverseLshape(a, n, m):
    
    # 仅遍历前n列,生成有效的L形
    for j in range(0, n):

        # traversing vertically
        for i in range(0, n - j):
            print(a[i][j], end = " ")

        # traverse horizontally
        for k in range(j + 1, m):
            print(a[n - 1 - j][k], end = " ")

# Driven Code
if __name__ == '__main__':
    n = 3
    m = 9
    a = [[0, 6, 3, 4, 4, 6 ,1, 4 ,1],
         [5, 4 ,0, 3, 4 , 6, 6, 3, 2],
         [4 ,3, 6, 3 ,2, 4, 2, 6, 5]]
    traverseLshape(a, n, m);

修复后输出

运行修复后的代码,输出与预期完全一致:

0 5 4 3 6 3 2 4 2 6 5 6 4 0 3 4 6 6 3 2 3 4 4 6 1 4 1

内容的提问来源于stack exchange,提问作者Jasleen Kaur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:37:43