sumc=0
t = int(input())
while t :
x = input().split()
n = int(x[0])
k = int(x[1])
e = int(x[2])
m = int(x[3])
suma = [0]*(n-1)
Matrix = []
for i in range(n-1):
Matrix.append([])
for j in range(e):
p = int(input())
Matrix[i].append(p)
for i in range(n-1):
for j in range(e):
suma[i] = suma[i] + Matrix[i][j]
for j in range(e):
p = int(input())
Matrix[n-1][j].append(p)
suma.sort(suma,suma+(n-1))
for j in range(e-1):
sumc = sumc + Matrix[n-1][j]
for z in range(m+1):
if(suma[k-1] < sumc+z):
break
if (z==m+1):
print("imposible")
else:
arr[n-1][e-1] = z
print(arr[n-1][e-1])
t-=1
我希望通过保持一个参数/行/列(此处由行(21)中的(n-1)表示的行)保持不变来访问数组。但是错误&#34;指数超出范围&#34;。 一般来说,如何访问其中一个参数是常量的类型问题的数组。
Traceback (most recent call last):
File "C:/Users/User/untitled/cde_chf_entexam.py", line 21, in <module>
Matrix[n-1][j].append(p)
IndexError: list index out of range
Process finished with exit code 1
只看到错误的第20-21行,整个代码是不必要的,如果它有可能帮助发布
答案 0 :(得分:2)
你的循环:
for i in range(n-1):
Matrix.append([])
for j in range(e):
p = int(input())
Matrix[i].append(p)
将n-1
元素添加到Matrix
。由于python是0索引,这意味着Matrix
中的最高索引是n-2
。
当您执行:Matrix[n-1][j].append(p)
时,Matrix[n-1]
表达式将失败并显示IndexError
,因为n-1
比最高索引位置(n-2
)高一个
另外,列表列表是用于在纯python中存储矩阵的有效数据结构,但是有第三方库专用于使矩阵更易于使用。该领域的事实标准是numpy
。