在IPython中控制列表可视化

时间:2017-02-12 23:50:13

标签: python list python-3.x ipython

问题

当IPython比当前屏幕更宽时,它决定垂直显示列表(并强制你滚动很多)。见下文

In [1]: list(range(20))
Out[1]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

In [2]: list(range(30))
Out[2]: 
[0,
 1,
 2,
 ...
 27,
 28,
 29]

而Python始终水平显示它们。 有没有办法在IPython中控制这种行为?我在网上找不到任何东西。也许我一直在使用不好的关键字。

后验重复

好的。现在我得到了答案,我还发现(使用pprint关键字)此问题与How to make Ipython output a list without line breaks after elements?重复。

3 个答案:

答案 0 :(得分:2)

您可以使用命令%pprint来控制它。

正如你所写,

list(range(30))

产量

[0,
 1,
 2,
 3,
 4,
...
 27,
 28,
 29]

如果您再输入

%pprint

您将阅读消息

Pretty printing has been turned OFF

然后

list(range(30))

变为:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

或者,您也可以输入

print(list(range(30))

也为您提供水平输出。

答案 1 :(得分:0)

您可以尝试使用pprint的pformat功能。

答案 2 :(得分:0)

您只需使用print即可解决。

但是对于您的问题,它与IPython交互式终端的最大线宽设置有关。

只需在ipython默认配置目录中编辑或创建IPython配置文件ipython_config.py(通常位于~/.ipython/profile_default/)。添加以下行,然后在终端重新启动IPython。

c = get_config()
# the default is 79, modify it to any max line width you like
# list repr string larger than it will be wrapped to display vertically
c.PlainTextFormatter.max_width = 100 

请参阅Introduction to IPython configurationipython: how to set terminal width