【问题标题】:IPython Notebook output cell is truncating contents of my listIPython Notebook 输出单元格正在截断我的列表的内容
【发布时间】:2014-06-16 19:35:39
【问题描述】:

我有一个很长的列表(大约 4000 个项目),当我尝试在 ipython 笔记本输出单元格中显示它时,它的内容被抑制了。可能显示了三分之二,但末尾有一个“...]”,而不是列表的所有内容。如何让 ipython notebook 显示整个列表而不是截止版本?

【问题讨论】:

    标签: python ipython ipython-notebook


    【解决方案1】:

    对于print(mylist) 的输出类似于[1, 1, 1, ..., 1, 1, 1] 的情况,[*mylist] 会将项目展开为所有项目都可见的行。

    【讨论】:

    • 很好的答案!这在打印到终端时也很有帮助。
    【解决方案2】:

    这应该可行:

    print(str(mylist))
    

    简单!

    【讨论】:

    • 谢谢。我想我会使用打印语句。我希望 ipython notebook 中有一个设置,可以在我输入变量名时打印变量的完整内容。
    • 对不起,要清楚,如果您以前不需要 print 语句,则不需要它,重要的是转换为 str()
    • 另外,ipython 源代码中似乎有一个max_seq_length 选项,但我找不到用户可配置的方式来编辑它;您可以尝试向 ipython 问题跟踪器发布请求
    • 感谢您的澄清,以及有关 max_seq_length 选项的信息。
    • @sziraqui 这对我来说仍然适用于最新版本的 jupyterlab
    【解决方案3】:

    如何在 IPython 中禁用列表截断:

    1. 如果您还没有 IPython 配置文件,请创建一个:
      ipython profile create
      
    2. 编辑配置文件以包含此行:
      c.PlainTextFormatter.max_seq_length = 0
      
    3. 重新启动您的笔记本实例。

    【讨论】:

    • 为什么这里不是公认的答案?这正是 OP 所要求的。
    【解决方案4】:

    以下行以可读的方式打印列表中的所有内容。

    [print(x) for x in lis] 
    

    【讨论】:

      【解决方案5】:

      只需使用打印命令而不是直接调用列表。喜欢打印 mylist 。那时它不会截断。

      【讨论】:

      • 这对我有用,另外需要注意的是我需要转换为 list 数据类型:print mylist.tolist()
      • 这会占用更多内存
      【解决方案6】:
      pd.options.display.max_rows = 4000
      

      为我工作

      见:http://pandas.pydata.org/pandas-docs/stable/options.html

      【讨论】:

      • 很高兴在 Stackoverflow 见到你。请使用指向参考/文档的链接来备份您的答案。如果您添加(简短)描述此配置选项的作用,我们将不胜感激。考虑通过定义值为 4000 的配置来解决提问者的问题(因为张贴者说他/她有大约 4000 个项目)。在您的帖子下方找到编辑按钮。非常感谢。
      • max_rows 适用于数据帧 - max_seq_items 根据 impiyush 的回答,与列表有关。
      • OP 从未提及熊猫。
      • 感谢您的回答。这是无需混合 javascript 或 IPython 配置的最佳解决方案。我用了那个但没有用:from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all"
      • 可能应该提到 pd 是您用于 pandas 库的别名。
      【解决方案7】:

      我知道这是一个很老的帖子,但仍然想发布我的答案,希望它对某人有所帮助。 您可以通过配置 pandas 选项来更改显示的 max_seq_items 的数量,如下所示:

      pd.options.display.max_seq_items = 2000
      

      【讨论】:

      • 我们把这块放在哪里?尝试将其放入我的笔记本中,但它仍然向我显示那些...
      • 取决于您拥有的物品数量。你得玩弄一下这个数字。
      • OP 从未提及熊猫。它可以是一个简单的长列表或 numpy 数组
      【解决方案8】:

      这是在不需要 Pandas 的 IPython 输出单元格中显示整个列表的方法:

      from IPython.display import HTML
      x = range(4000)
      HTML('<br />'.join(str(y) for y in x))
      

      添加额外的 HTML 元素并获得更精细的显示也很容易。现在单击输出单元格的左侧将缩小内容并添加本地滚动条。

      【讨论】:

      • 感谢您的选择。
      【解决方案9】:

      如果您正在使用 pandas,请快速破解

      from pandas import DataFrame
      from IPython.display import HTML
      HTML(DataFrame(myList).to_html())
      

      【讨论】:

      • 为什么每个人都认为列表是 Df。这不适用于 numpy 数组或简单的 python 列表
      • 这是一个旧答案。现在有更好的方法,比如使用 IPython 中的 display 函数。
      猜你喜欢
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      相关资源
      最近更新 更多