IndexError: list index out of range Python. Without using sort or sorted:
IndexError: list index out of range Python. Without using sort or sorted:
我的代码有问题。我还是 Python 的新手,但我很感激任何朝着正确方向的推动。我正在尝试对数字序列进行排序并 returns 排序。我不是在寻求答案,而是在寻求指导以帮助我更正自己的代码。
我不确定如何解决超出范围的问题。我需要在某处添加 -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
你需要更好地澄清问题并写下你到底想做什么。但是,在这种情况下,会出现您正在谈论的超出范围的问题,因为您在 运行 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, 0, 4, 8]
print(interleaved(seq1,seq2))
我的代码有问题。我还是 Python 的新手,但我很感激任何朝着正确方向的推动。我正在尝试对数字序列进行排序并 returns 排序。我不是在寻求答案,而是在寻求指导以帮助我更正自己的代码。
我不确定如何解决超出范围的问题。我需要在某处添加 -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
你需要更好地澄清问题并写下你到底想做什么。但是,在这种情况下,会出现您正在谈论的超出范围的问题,因为您在 运行 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, 0, 4, 8]
print(interleaved(seq1,seq2))