IPython Notebook: how to display() multiple objects without newline

对着背影说爱祢 提交于 2020-08-01 09:44:00

问题


Currently when I use display() function in the IPython notebook I get newlines inserted between objects:

>>> display('first line', 'second line') 
first line
second line

But I would like the print() function's behaviour where everything is kept on the same line, e.g.:

>>> print("all on", "one line")
all on one line 

Is there a method of changing display behaviour to do this?


回答1:


No, display cannot prevent newlines, in part because there are no newlines to prevent. Each displayed object gets its own div to sit in, and these are arranged vertically. You might be able to adjust this by futzing with CSS, but I wouldn't recommend that.

The only way you could really get two objects to display side-by-side is to build your own object which encapsulates multiple displayed objects, and display that instead.

For instance, your simple string case:

class ListOfStrings(object):
    def __init__(self, *strings):
        self.strings = strings

    def _repr_html_(self):
        return ''.join( [
           "<span class='listofstr'>%s</span>" % s
           for s in self.strings
           ])

display(ListOfStrings("hi", "hello", "hello there"))

example notebook



来源:https://stackoverflow.com/questions/17439176/ipython-notebook-how-to-display-multiple-objects-without-newline

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!