首页 > 解决方案 > 如何以与 python 控制台相同的格式打印

问题描述

我正在使用 3D 数组,例如,在 IPython 控制台中:

In [8]: xx = [[[0 for i in range(4)] for j in range(4)] for k in range(4)]

xx
Out[9]: 
[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
 [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
 [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
 [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]]

print(xx)
[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]], [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]]

当我只是在控制台中评估数组时,它的格式很好,但是当我 print() 它时,它格式化为一长行,然后换行并看起来很糟糕。有很多方法可以从程序中重现终端样式的格式,但是是否可以直接调用为控制台格式化的函数?我试过了

repr(xx)

但这并没有达到预期的效果。这样的函数通常很有用,而不仅仅是数组。

标签: pythonformatting

解决方案


使用pprint,如下所示:

>>> import pprint
>>> pprint.pprint(xx)
[[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
 [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
 [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
 [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]]
>>> 

推荐阅读