Python列表索引超出范围-算法
我有一个错误,我可以循环一个数组,但我不知道该怎么做。但是我尝试插入Python列表索引超出范围-算法,python,algorithm,mergesort,Python,Algorithm,Mergesort,我有一个错误,我可以循环一个数组,但我不知道该怎么做。但是我尝试插入0而不是p1,p2和p3。这起作用了。但是如果我运行这个代码 这个程序所做的事情是对两个数组进行排序,并按正确的顺序设置它们 Arr2 = [2,5,6,8] Arr1_Length = len(Arr1) Arr2_Length = len(Arr2) FinishArr_Length = Arr1_Length + Arr2_Length FinishArr = [] p1 = 0 p2 = 0 p3 = 0 pr
0
而不是p1
,p2
和p3
。这起作用了。但是如果我运行这个代码
这个程序所做的事情是对两个数组进行排序,并按正确的顺序设置它们
Arr2 = [2,5,6,8]
Arr1_Length = len(Arr1)
Arr2_Length = len(Arr2)
FinishArr_Length = Arr1_Length + Arr2_Length
FinishArr = []
p1 = 0
p2 = 0
p3 = 0
print(FinishArr)
print(FinishArr_Length)
print(Arr1[p1])
print(Arr2[p2])
while p3 < FinishArr_Length:
if Arr1[p1] < Arr2[p2]:
FinishArr.append(Arr1[p1])
p1 += 1
else:
FinishArr.append(Arr2[p2])
p2 += 1
p3 += 1
print(FinishArr)
Arr2=[2,5,6,8]
Arr1_长度=长度(Arr1)
Arr2_长度=长度(Arr2)
饰面长度=Arr1\U长度+Arr2\U长度
FinishArr=[]
p1=0
p2=0
p3=0
打印(FinishArr)
打印(成品长度)
打印(Arr1[p1])
打印(Arr2[p2])
p3
我得到这个错误:
Traceback (most recent call last):
File "Test.py", line 21, in <module>
if Arr1[p1] < Arr2[p2]:
IndexError: list index out of range
回溯(最近一次呼叫最后一次):
文件“Test.py”,第21行,在
如果Arr1[p1]
您必须检查p1和p2是否超过各自阵列的长度:
while p1<Arr1_Length and p2<Arr2_Length:
if Arr1[p1] < Arr2[p2]:
FinishArr.append(Arr1[p1])
p1 += 1
else:
FinishArr.append(Arr2[p2])
p2 += 1
p3 += 1
什么是
Arr1
?也许你的Arr1
是一个空白列表,你能告诉我Arr1
里面是什么吗?如果你想对这两个数组进行排序,你可以使用sorted(Arr1)
,如果你想用merge对它们进行排序,你可以使用sorted(Arr1+Arr2)
。谢谢。第二个例子是帮助。非常感谢
if p1<Arr1_Length:
while p1<Arr1_Length:
FinishArr.append(Arr1[p1])
p1 += 1
if p2<Arr2_Length:
while p2<Arr2_Length:
FinishArr.append(Arr2[p2])
p2 += 1