为什么超出范围?
问题描述:
有人可以告诉我为什么我得到这个错误吗?为什么超出范围?
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
答
你不能索引result
在len(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
我认为用于转置矩阵的规范解决方案是'zip(* X)'。但我明白需要让自己的版本适合教育目的。 – Droogans