代码
对行排序的数组进行排序 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的大小,所以为什么会出现问题
答案 0 :(得分:0)
欢迎使用StackOverflow!希望这会有所帮助
c.append(b [y])IndexError:列表索引超出范围
在python中,列表中的所有项目都可以使用其索引,即列表中的位置。
在代码c.append(b[y])
中,有两个部分
b[y]
意味着==从列表b
中获得索引为y
的项目。现在说您有一个列表[0, 1, 2, 3, 4]
。如您所见,该列表只有5个元素。现在,如果我要求python给我一个索引为6或7或10的元素,如何获取?因此,要通知用户此 IndexError 异常已出现。
一种确保不会发生IndexError的方法是使用以下if条件
if y < len(b):
c.append(b[y])
注意:list
更像是链表而不是数组。所以您不需要指定长度