使用递归打印类中的矩阵- python

7dl7o3gd  于 2023-01-16  发布在  Python
关注(0)|答案(2)|浏览(104)

使用Python -我有一个接受数字矩阵的类,我需要使用递归打印矩阵,它一遍又一遍地打印第一个数组。
这是我写的代码

class Matrix:
    def __init__(self,mtx):
        self.mtx = mtx
        
    def PrintMat(self,mtx):
        if len(self.mtx)==1:
            print(self.mtx[0])
        else:
            print(self.mtx[0])
            self.PrintMat(self.mtx[1:])
            
    def properties(self):
        print(self.mtx)
        
matrix = Matrix(([1,2,3],[2,3,4]))
matrix.PrintMat(matrix)
w8ntj3qf

w8ntj3qf1#

函数PrintMat使用类变量而不是其参数。
试试看:

def PrintMat(self,mtx):
    if len(mtx)==1:
        print(mtx[0])
    else:
        print(mtx[0])
        self.PrintMat(mtx[1:])
pcww981p

pcww981p2#

你不应该传递一个mtx参数--使用self.mtx。另外,如果你的矩阵为空(索引错误)或太长(超过递归深度),你会遇到问题。

def print_matrix(self):
    for row in self.mtx:
        print(row)

你甚至可以考虑为你的类创建一个__str____repr__方法,将矩阵作为字符串返回,这样你就可以打印它了,或者如果每一行足够长,就使用pprint.pprint将矩阵打印成多行。

from pprint import pformat

class Matrix:
    def __init__(self, mtx):
        self.mtx = mtx

    def __repr__(self):
        return pformat(self.mtx)

相关问题