矩阵类定义
我需要一些帮助,特别是关于b)的部分。谢谢你。
定义一个矩阵的类,具体要求如下:
(a) 实现一个叫做 __init__
的方法,这个方法接收一个列表的列表作为输入,并返回一个新的矩阵对象。
比如,对于矩阵 A =
1 2
3 4
用户可以输入 A = matrix( [[1,2],[3,4]])
。
(b) 实现一个叫做 __repr__
的方法,这个方法返回矩阵的字符串表示,要求每一行单独打印在一行上。例如,打印 A 的时候应该是:
1, 2
3, 4
2 个回答
3
class matrix(object):
def __init__(self,matrix)
self.matrix = matrix
def __repr__(self):
return '\n'.join(','.join(str(m) for m in n) for n in self.matrix)
因为这是作业,我强烈建议你查阅所有你不懂的内容,看看文档,并多动手试试。
6
对于第一个问题,存储矩阵的方式其实取决于你想怎么做。用列表的列表来存储矩阵,通常来说是可以的,但我不太清楚你具体的需求是什么。矩阵有一些限制,比如每一行的元素数量和类型都必须一致,而列表的列表就没有这些限制;所以你需要在这个类里确保这些规则能被遵守。不过,如果这就是你作业的全部内容,直接用列表的列表也是可以的。
因此,你可能需要对输入进行一些检查。len()
这个方法会很有用。
你的构造函数需要能够处理以下情况,最终可能会用到异常处理:
Matrix([])
Matrix("Hi")
Matrix([1])
Matrix([1], [2])
Matrix([1], [2, 3])
Matrix([1,2], [3, 4])
Matrix([1.0, 2.0], [3.0, 4.0])
Matrix([1.0 + 2j, 3.0 - 4j], [5.0 + 6.0j, 7.0 + 8.0j])
a = []; a = [a, a]; Matrix(a)
对于第二个问题,你只需要在每一行的元素之间加上一个 ", "
,在每一行之间加上一个 "\n"
。如果有简单的方法来做到这一点就好了……