如何使用Matrix类打印嵌套列表,使内部元素以空格分隔呈现数组样式
解决矩阵输出样式问题
看起来你的代码里有两个小细节需要调整,就能实现你想要的子列表内元素空格分隔的数组样式输出了,我来一步步帮你改:
首先,你的set_matrix方法现在用了append,这会导致self.__list变成一个嵌套了矩阵的三维列表(比如调用一次后,它是[[[1,2,3,4],[5,6,7,8],[9,8,7,6]]]),这显然不是你想要的存储矩阵的方式,应该改成直接赋值。
然后是__str__方法,原来的逻辑是把每个子列表整体换行输出,我们需要调整成:每个子列表内的元素用空格连接,再给子列表加上方括号,最后把所有子列表用逗号分隔并包裹在外层方括号里。
修改后的完整代码
class Matrix: def __init__(self): self.__list = [] def set_matrix(self, matrix_list): # 把append改成赋值,直接存储二维矩阵 self.__list = matrix_list def __str__(self): # 先把每一行的元素转成字符串,用空格连接 formatted_rows = [' '.join(map(str, row)) for row in self.__list] # 给每一行加上方括号,用逗号+换行分隔,最后包裹外层方括号 return f'[\n {",\n ".join([f"[{row}]" for row in formatted_rows])}\n]' m1 = Matrix() m1.set_matrix( [[1,2,3,4],[5,6,7,8],[9,8,7,6]] ) print('m1:') print(m1)
输出效果
运行后你会得到美观的数组样式输出:
m1: [ [1 2 3 4], [5 6 7 8], [9 8 7 6] ]
如果想要紧凑的一行输出
把__str__方法改成下面这样就行:
def __str__(self): formatted_rows = [' '.join(map(str, row)) for row in self.__list] return f'[{", ".join([f"[{row}]" for row in formatted_rows])}]'
对应的输出是:
m1: [[1 2 3 4], [5 6 7 8], [9 8 7 6]]
关键改动说明
- 子列表内空格分隔:用
' '.join(map(str, row))完成元素转字符串+空格连接的操作,完美实现你要的子列表内元素空格分隔效果。 - 修正存储结构:把
append改成赋值,确保矩阵是二维结构存储,这样后续遍历处理才符合预期。 - 数组样式包装:通过给每行加方括号、逗号分隔行、外层加方括号,让输出完全模拟数组的视觉样式。
内容的提问来源于stack exchange,提问作者ElonTusk1312
相关产品推荐
相关产品推荐

