首页 > 解决方案 > python中的矩阵乘法与分类

问题描述

我是新来的,我的英语不是很好,所以我为将来可能出现的错误道歉。

我的老师让我们写这个带有分类的程序......这是代码

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)

这是司机:

from Matrixclass import Matrix

print("For first matrix enter number of row and column respectively: (Ex: 4 5)")

m,n = list(map(int,input().split()))

print("Enter Row values")

mat1 = []
 

for i in range(m) :
    print("Enter row",i + 1,"value:")

    row = list(map(int,input().split()))

    mat1.append(row)

print("For 2nd matrix enter number of row and column respectively: (Ex: 5 4)")

p,q = list(map(int,input().split()))

print("Enter Row wise values")

mat2 = []
 
for j in range(p) :
    print("Enter row",j + 1,"value:")

    row = list(map(int,input().split()))

    mat2.append(row)
    print("Matrix 1:",mat1)
    print("Matrix 2:",mat2)
    A = Matrix(mat1)
    B = Matrix(mat2)
    C=A.mult(B)
    print("The Multiplication of two Matrix:\n",C.mat)

当我运行它时,我得到了这个错误

AttributeError: 'list' object has no attribute 'mult'

更新:现在可以了;谢谢

标签: pythonoopmatrixmultiplication

解决方案


推荐阅读