2016-02-11 120 views
0

有人可以告诉我为什么我得到这个错误吗?为什么超出范围?

result[i][j+1]=X[i][j] 
IndexError: list assignment index out of range 

这里是我的代码:

def matrixTranspose(X): 
    result=[[0 for k in range (len(X))] for l in range (len(X[0]))] 
    for i in range(len(X)): 
     for j in range (len(X[0])): 
      result[i][j+1]=X[i][j] 
    return result 


m1=[] 
r=input("enter The no. of rows:") 
c=input("enter The no. of columns:") 
s=[[0 for i in range (c)]for j in range (r)] 
for i in range (r): 
row=[] 
for j in range (c): 
    x=input("Enter Value") 
    row.append(x) 
m1.append(row) 


print m1 
m2=matrixTranspose(m1) 
print m2 
+0

我认为用于转置矩阵的规范解决方案是'zip(* X)'。但我明白需要让自己的版本适合教育目的。 – Droogans

回答

1

你不能索引resultlen(X[0])+1,因为它的尺寸是由len(X[0])len(X)。您的matrixTranpose功能似乎也没有采取X的转置。推测你的意思是:

def matrixTranspose(X): 
    result=[[0 for k in range (len(X))] for l in range (len(X[0]))] 
    for i in range(len(X)): 
     for j in range (len(X[0])): 
      result[j][i]=X[i][j] 
    return result 
+0

那么如果我想旋转矩阵90度? –

+0

这不是转置。如果你想旋转90度的矩阵,这个网站上有很多答案告诉你如何做到这一点。 – xnx