猫史档案馆


一个矩阵模块

用户:虐心工作间虐心工作间查看:0 回复:0 评论:0 创建时间:2020-10-03T12:45:35


闲 得 无 聊 做 的 一 个 东 西 , 画 了 一 个 小 时 做 出 来 才 发 现 p y t h o n 自 带 二 维 列 表 功 能 ( 想 哭 … … )

class Matrix:
    '''矩阵'''
    mtl = []
    rows = 0
    def __init__(self, matrixlist, rows):
        if(len(matrixlist) // rows == len(matrixlist) / rows):
            lines = len(matrixlist) // rows
            self.rows = rows
            self.mtl = matrixlist
        else:
            raise ValueError('矩阵列表解析出现空白')
    
    def printm(self, between):
        for i in range(len(self.mtl) // self.rows):
            listm = [str(self.mtl[(i * self.rows) + j]) + between for j in range(self.rows)]
            value = between.join(listm)
            print(value)
    #输出矩阵
    
    def modify(self, tmi, content):
        self.mtl[tmi] = content
    #修改矩阵中的元素

    def modifylr(self, line, row, content):
        self.mtl[line * self.rows + row] = content
    #也是修改矩阵中的元素

    def delmatrixrow(self, line):
        for i in range(self.rows):
            del self.mtl[line * self.rows + i]
    #删除一行
    
    def delmatrixline(self, row):
        lines = len(self.mtl) // self.rows
        for i in range(lines):
            del self.mtl[i * (lines - 1) + row]
    #删除一列

    def appendmatrixrow(self, matrixlist):
        if len(matrixlist) == self.rows:
            self.mtl = self.mtl + matrixlist
        else:
            raise ValueError('矩阵列表每行的元素个数不匹配')
    #添加一行到矩阵末尾

    def appendmatrixline(self, matrixlist):
        lines = len(self.mtl) // self.rows
        if len(matrixlist) == lines:
            for i in range(lines):
                self.mtl.insert(((self.rows + 1) * (i + 1) - 1), matrixlist[i])
            self.rows += 1
        else:
            raise ValueError('矩阵列表每列的元素个数不匹配')
    #添加一列到矩阵末尾

if __name__ == '__main__':
    mtl = [3, 5, 8, 6, 3, 4, 0, 6, 2]
    matrix = Matrix(mtl, 3)
    matrix.printm(' ')
    print('\n')
    matrix.modify(4, 1)
    matrix.printm(' ')
    print('\n')
    matrix.modifylr(0, 1, 10)
    matrix.modifylr(2, 0, 4)
    matrix.printm(' ')
    print('\n')
    matrix.appendmatrixrow([4, 3, 7])
    matrix.printm(' ')
    print('\n')
    matrix.appendmatrixline([3, 1, 9, 0])
    matrix.printm(' ')
    print('\n')


回复

上一页1 页 / 共 0下一页