Python列表索引越界算法

2024-10-04 03:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个错误,我可以循环通过一个数组,我不知道正确的做法。但是我试着插入0而不是p1p2p3。这就成功了。但如果我运行这个代码。你知道吗

这个程序所做的事情是对两个数组进行排序,并将它们按正确的顺序进行设置。你知道吗

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)

我得到这个错误:

Traceback (most recent call last):
  File "Test.py", line 21, in <module>
    if Arr1[p1] < Arr2[p2]:
IndexError: list index out of range

Tags: 代码程序lenif错误数组lengthprint
1条回答
网友
1楼 · 发布于 2024-10-04 03:22:46

必须检查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或Arr2的元素是否剩余,并将剩余的值压入FinishArr。你知道吗

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

相关问题 更多 >