我有一个名为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]
答案 0 :(得分:18)
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]
答案 1 :(得分:5)
如果您需要在嵌套结构中使用它,则应查看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)
答案 2 :(得分:0)
可爱的代码,爱德华,但对我不起作用。输出:
{1:[8,0.3333333333333333,[0.14285714285714285]]}
isinstance(float)之后的行上的断点仅在我向pprint提供单个float时才触发。
Windows 10上的Python 3.9,在VS Code 1.50.1下运行