索引错误:列表索引超出 Python 范围不使用排序或排序:

问题描述

我的代码有问题。我对 Python 还是个新手,但我很欣赏任何朝着正确方向前进的努力。我正在尝试对一系列数字进行排序并返回排序。我不是在寻求答案,而是寻求指导以帮助我更正自己的代码

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

def interleaved(seq1,seq2):
    seq1= [-7,-2,-1]
    seq2= [-4,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

解决方法

你需要更好地澄清问题并写下你想要做什么。但是,在这种情况下,您正在谈论的超出范围的问题是因为您在运行 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 循环,因为索引超出范围。

您可以通过添加 break 来解决此问题,但何时何地添加它取决于您希望代码做什么。

,

在这里,我采用 *argv 参数,以便您可以传递所需的列表数量。然后我创建一个主列表,所有列表都连接在一起。然后我循环遍历元素并在顺序不正确时进行交换

def interleaved(*seq):
    res=[]
    for x in seq:
        res.extend(x)
    
    for i in range(len(res)-1):
        if res[i] > res[i+1]:
            res[i],res[i+1]=res[i+1],res[i]
    
    return res

seq1= [-7,-2,-1]
seq2= [-4,4,8]
print(interleaved(seq1,seq2))

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...