我的代码中出现索引错误超出范围

时间:2019-10-27 11:50:20

标签: python indexing

代码

对行排序的数组进行排序 a的大小为m,b的大小为n

t=int(input())
for i in range(0,t):
    n,m,k=map(int,input().split())
    a=list(map(int,input().split()))
    b=list(map(int,input().split()))
j=0
x=0
y=0
c=[]
while x!=m and y!=n:
    if a[x]<b[y]:
        c.append(a[x])
        x+=1
        #j+=1
    elif a[x]==b[y]:
        c.append(a[x])
        x+=1
        y+=1
        #j+=1
    else:
        c.append(b[y])
        y+=1
while x<m:
        c.append(a[x])
        x+=1
while y<n:
        c.append(b[y])
        y+=1

错误:

  

c.append(b [y])IndexError:列表索引超出范围

这是我遇到的错误,为什么会这样。 我什至没有定义数组c的大小,所以为什么会出现问题

1 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow!希望这会有所帮助

  

c.append(b [y])IndexError:列表索引超出范围

在python中,列表中的所有项目都可以使用其索引,即列表中的位置。

在代码c.append(b[y])中,有两个部分

  1. b[y]意味着==从列表b中获得索引为y的项目。

现在说您有一个列表[0, 1, 2, 3, 4]。如您所见,该列表只有5个元素。现在,如果我要求python给我一个索引为6或7或10的元素,如何获取?因此,要通知用户此 IndexError 异常已出现。

  1. 将获取的项目追加到列表c。在此发生之前,就发生了上述错误,因此这部分从未发生。

一种确保不会发生IndexError的方法是使用以下if条件

if y < len(b):
    c.append(b[y])

注意list更像是链表而不是数组。所以您不需要指定长度