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

Python中如何实现二维列表的Numpy风格格式化控制台输出

实现调用方法对象时输出规整的二维列表格式

要实现调用print(a.get_ranking_matrix)(不带括号)时输出空格分隔的规整二维列表格式,核心是解决直接打印方法对象会输出默认绑定方法信息的问题,以下是两种可行实现方式:

方案一:使用@property装饰器 + 自定义矩阵包装类

这种方式将原方法转为属性,同时通过自定义类控制输出格式,既满足打印需求,又保留原始矩阵的可访问性。

步骤1:定义格式化矩阵的包装类

创建一个类,重写__str__方法实现自定义打印格式:

class FormattedMatrix:
    def __init__(self, matrix):
        self.matrix = matrix  # 保存原始二维列表
    
    def __str__(self):
        # 将每行元素转为字符串并用空格连接,再将所有行用换行符拼接
        return '\n'.join(' '.join(map(str, row)) for row in self.matrix)
    
    def __repr__(self):
        # 让repr与str输出一致,确保交互环境中直接输出也能显示规整格式
        return self.__str__()

步骤2:修改原类的方法为属性

将get_ranking_matrix方法通过@property装饰器转为属性,返回包装后的矩阵对象:

class Ranking:
    def __init__(self):
        self.ranking_matrix = [[2, 1, 4, 3, 6, 5], [3, 1, 4, 6, 5, 2], [4, 1, 2, 6, 3, 5], [2, 1, 3, 4, 5, 6], [2, 1, 4, 5, 6, 3], [2, 1, 4, 6, 5, 3]]
    
    @property
    def get_ranking_matrix(self):
        return FormattedMatrix(self.ranking_matrix)

使用效果

a = Ranking()
print(a.get_ranking_matrix)

输出:

2 1 4 3 6 5
3 1 4 6 5 2
4 1 2 6 3 5
2 1 3 4 5 6
2 1 4 5 6 3
2 1 4 6 5 3

如果需要获取原始二维列表,可通过a.get_ranking_matrix.matrix访问。

方案二:直接在@property中返回可打印对象(简化版)

如果不需要保留原始矩阵的直接访问(或可通过原实例属性self.ranking_matrix获取),可以简化实现,无需额外包装类:

class Ranking:
    def __init__(self):
        self.ranking_matrix = [[2, 1, 4, 3, 6, 5], [3, 1, 4, 6, 5, 2], [4, 1, 2, 6, 3, 5], [2, 1, 3, 4, 5, 6], [2, 1, 4, 5, 6, 3], [2, 1, 4, 6, 5, 3]]
    
    @property
    def get_ranking_matrix(self):
        # 定义一个匿名类,仅实现__str__方法
        class _Matrix:
            def __str__(self):
                return '\n'.join(' '.join(map(str, row)) for row in self.ranking_matrix)
        return _Matrix()

这种方式同样能实现目标打印效果,但无法直接通过get_ranking_matrix获取原始列表,需通过实例的ranking_matrix属性访问。


内容的提问来源于stack exchange,提问作者jaroslaw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:05:21