首页 > 解决方案 > IndexError:列表索引超出范围 Python。不使用 sort 或 sorted:

问题描述

我的代码有问题。我对 Python 还是很陌生,但我很感激朝着正确的方向前进。我正在尝试对一系列数字进行排序并返回排序。我不是在寻求答案,而是寻求帮助我更正自己的代码的指导。

我不确定如何解决超出范围的问题。我需要在某处添加-1吗?

def interleaved(seq1,seq2):
    seq1= [-7, -2, -1]
    seq2= [-4, 0, 4, 8]
    i = 0
    j = 0
    res = []

    while i <len(seq1) and j <len(seq2):
        print(i,j,seq1[i],seq2[j])
        i+=1
        j+=1
        if seq1[i] <seq2[j]:
            print(res)
            i+=1
            res.append(seq1[i])
        if seq1[i]> seq2[j]:
            print(res)
            j+=1
            res.append(j)
    return res

标签: pythonwhile-looprangeoutofrangeexception

解决方案


您需要更好地澄清问题并写下您想要做什么。但是,在这种情况下,您正在谈论的超出范围问题会出现,因为您在运行 if 循环之前增加了 i 和 j 。

while i <len(seq1) and j <len(seq2):
    print(i,j,seq1[i],seq2[j])
    i+=1
    j+=1

当这个 while 循环从i == 2代码的第三行开始时,将值i增加到 3,因此 if 循环无法执行,因为 index 超出范围。

您可以通过添加 来解决此问题break,但是添加它的时间和位置取决于您希望代码执行的操作。


推荐阅读