矩阵类定义

2 投票
2 回答
4364 浏览
提问于 2025-04-16 14:11

我需要一些帮助,特别是关于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"如果有简单的方法来做到这一点就好了……

撰写回答