在python中访问多维矩阵

时间:2016-06-27 20:09:01

标签: python arrays multidimensional-array

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行,整个代码是不必要的,如果它有可能帮助发布

1 个答案:

答案 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