web-dev-qa-db-ja.com

要素の後の改行なしでIpython出力をリストにする方法は?

IPythonコンソールは、各要素が独自の行に表示されるように、改行付きの要素のリストを出力します。これは通常機能ですが、私の場合はバグです。長いリストをコピーして貼り付ける必要があるため、コンパクトな表現が必要です。どうすればこれを達成できますか?

24
clstaudt

%pprintコマンドを使用して、pprint機能のオン/オフを切り替えることができます。

In [1]: range(24)
Out[1]:
[0,
 1,
 2,
 ...
 21,
 22,
 23]

In [2]: %pprint
Pretty printing has been turned OFF

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

pprintを完全にオフにする場合は、プロファイルを作成し、c.PlainTextFormatter.pprint = Falseをプロファイルファイルに追加します。

Linuxの例:

$ ipython profile create
[ProfileCreate] Generating default config file: '.../ipython_config.py'
[ProfileCreate] Generating default config file: u'..../ipython_notebook_config.py'
$ echo 'c.PlainTextFormatter.pprint = False' >> ~/.ipython/profile_default/ipython_config.py
42
falsetru

ipython--no-pprintオプションで開始します。

$ ipython --no-pprint
...
IPython 0.13.2 -- An enhanced Interactive Python.
...
In [1]: lis = ['a'*10]*10

In [2]: lis
Out[2]: ['aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa']

もう1つのオプションは、pprintがすでに無効になっている--classicオプションでipythonを起動することです。

$ ipython --classic
...
IPython 0.13.2 -- An enhanced Interactive Python.
...
>>> lis = ['a'*10]*10
>>> lis
['aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa', 'aaaaaaaaaa']
4

きれいな印刷を完全にオフにする代わりに、PlainTextFormattermax_width特性を増やすこともできます。

以下をipython_config.pyに追加します(ipython locate profileで見つけます):

c.PlainTextFormatter.max_width = 120

これにより、行をデフォルトの79文字ではなく120文字まで拡張できるので、プリティプリンターはより少ない垂直方向のスペースを使用できます。

4
Josh Bode