【问题标题】:Control a print format when printing a list in Python在 Python 中打印列表时控制打印格式
【发布时间】:2011-11-13 03:44:45
【问题描述】:

我有一个名为a 的浮点数列表。当我使用print a 打印列表时。我得到的结果如下。

[8.364, 0.37, 0.09300000000000003, 7.084999999999999, 0.469, 0.303, 9.469999999999999, 0.28600000000000003, 0.2290000000 000001, 9.414, 0.9860000000000001, 0.534, 2.1530000000000005]

我可以告诉列表打印机打印“5.3f”的格式以获得更好的结果吗?

[8.364, 0.37, 0.093, 7.084, 0.469, 0.303, 9.469, 0.286, 0.229, 9.414, 0.986, 0.534, 2.153]

【问题讨论】:

    标签: python list printing format


    【解决方案1】:
    In [4]: print ['%5.3f' % val for val in l]
    ['8.364', '0.370', '0.093', '7.085', '0.469', '0.303', '9.470', '0.286', '0.229', '1.000', '9.414', '0.986', '0.534', '2.153']
    

    l 是您的列表。

    编辑:如果引号有问题,您可以使用

    In [5]: print '[' + ', '.join('%5.3f' % v for v in l) + ']'
    [8.364, 0.370, 0.093, 7.085, 0.469, 0.303, 9.470, 0.286, 0.229, 1.000, 9.414, 0.986, 0.534, 2.153]
    

    【讨论】:

    • 华丽的答案!在 python3 中,甚至可以在列表的左方括号 [ 之前添加一个星号 *,即 print(*['%5.3f' % val for val in l]),这会产生非常好的输出,不带引号 ' 也不带括号 [ ]。也许您想将此添加到您的答案中?
    【解决方案2】:

    如果您需要它在嵌套结构中工作,您应该查看pprint 模块。在这种情况下,以下应该做你想做的事:

    from pprint import PrettyPrinter
    class MyPrettyPrinter(PrettyPrinter):
        def format(self, object, context, maxlevels, level):
            if isinstance(object, float):
                return ('%.2f' % object), True, False
            else:
                return PrettyPrinter.format(self, object, context,
                                            maxlevels, level)
    print MyPrettyPrinter().pprint({1: [8, 1./3, [1./7]]})
    # displays {1: [8, 0.33, [0.14]]}
    

    有关pprint的更多详细信息,请参阅:http://docs.python.org/library/pprint.html

    如果只是为了一个平面列表,那么aix的解决方案是不错的。或者,如果您不喜欢多余的引号,您可以这样做:

    print '[%s]' % ', '.join('%.3f' % val for val in list)
    

    【讨论】:

      【解决方案3】:

      可爱的代码,爱德华,但对我不起作用。输出:

      {1: [8, 0.3333333333333333, [0.14285714285714285]]}

      只有当我输入 pprint 一个浮点数时,isinstance(float) 之后的行上的断点才会触发。

      Windows 10 上的 Python 3.9,在 VS Code 1.50.1 下运行

      【讨论】:

        猜你喜欢
        • 2013-10-24
        • 1970-01-01
        • 2021-12-31
        • 1970-01-01
        • 2022-11-20
        • 2021-06-17
        • 2012-03-30
        • 2017-08-10
        • 1970-01-01
        相关资源
        最近更新 更多