Как печатать в том же формате, что и консоль python - PullRequest
0 голосов
/ 08 января 2019

Я работаю с 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]]]

Когда я просто оцениваю массив в консоли, он красиво отформатирован, но когда я печатаю его, он форматируется в одну длинную строку, которая затем оборачивается и выглядит ужасно. Существуют давно разработанные способы воспроизведения форматирования в терминальном стиле из программы, но возможно ли просто вызвать функцию, которая форматирует консоль напрямую? Я пытался

repr(xx)

Но это не дает желаемого эффекта. Такая функция может быть полезна не только для массивов.

1 Ответ

0 голосов
/ 08 января 2019

Используйте 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]]]
>>> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...