我有一份Python学校的工作。 我需要创建一个名为" Matrix"并给它一些我可以做的动作。
直到多功能一切都很棒!但在这里我有一个问题。 我非常肯定我的代码已达到目标!但现在,我只是不知道该怎么做。
class Matrix:
def __init__(self,lst):
self.mat = lst
self.dim = (len(lst), len(lst[0]))
def get(self,i,j):
if (i) <= self.dim[0] and (j) <= self.dim[1]:
return self.mat[i-1][j-1]
else:
print "index not in matrix!"
return None
def mult(self,other):
new_mat = []
for r in range(1,self.dim[0]+1):
new_row = []
res = 0
for c in range(1,other.dim[0]+1):
res += (self.get(r,c) * other.get(c,r))
new_row.append(res)
new_mat.append(new_row)
new_row = []
return Matrix(new_mat)
它总是告诉我,我把索引,但我不明白如何
输入即时检查是
A = Matrix([[1,0,2],[3,1,1],[4,5,2],[0,2,8]])
B = Matrix([[1,3],[4,2],[0,5]])
C = A.mult(B)
任何人都可以看看这个并告诉我什么是错的?
答案 0 :(得分:0)
嘿,我改变了你的代码。不要使用get方法。看看
class Matrix:
def __init__(self,lst):
self.mat = lst
self.dim = (len(lst), len(lst[0]))
self.rows=[lst[i][:] for i in range(self.dim[0])]
self.columns=[[lst[i][j] for i in range(self.dim[0])] for j in range(self.dim[1])]
def get(self,i,j):
if (i) <= self.dim[0] and (j) <= self.dim[1]:
return self.mat[i-1][j-1]
else:
print "index not in matrix!"
return None
def __multList(self,list1,list2):
if len(list1)==len(list2):
return sum([list1[i]*list2[i] for i in range(len(list1))])
def mult(self,other):
matrix=[]
for i in range(len(self.rows)):
rows=[]
for j in range(len(other.columns)):
rows.append(self.__multList(other.columns[j],self.rows[i]))
matrix.append(rows)
return Matrix(matrix)
和你的矩阵,
A = Matrix([[1,0,2],[3,1,1],[4,5,2],[0,2,8]])
B = Matrix([[1,3],[4,2],[0,5]])
C=A.mult(B)
print C.mat
你得到了
[[1, 13], [7, 16], [24, 32], [8, 44]]