2016-02-11 3 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

Вы не можете индексировать result на len(X[0])+1, поскольку его размеры len(X) по len(X[0]). Кроме того, ваша 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