You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 12:02:39