La celda de salida de IPython Notebook está truncando el contenido de mi lista

3 minutos de lectura

avatar de usuario de user3006135
usuario3006135

Tengo una lista larga (alrededor de 4000 elementos) cuyo contenido se suprime cuando intento mostrarlo en una celda de salida de un cuaderno de ipython. Tal vez se muestren dos tercios, pero al final tiene un “…]”, en lugar de todo el contenido de la lista. ¿Cómo hago para que ipython notebook muestre la lista completa en lugar de una versión cortada?

Avatar de usuario de Jelmer
Jelmer

pd.options.display.max_rows = 4000

trabajó para mi

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

  • Encantado de verte de vuelta en Stackoverflow. Realice una copia de seguridad de su respuesta con un enlace a una referencia/documentación. Le agradeceríamos que agregue una descripción (breve) de lo que está haciendo esta opción de configuración. Considere abordar la pregunta del autor de la pregunta definiendo la configuración con el valor 4000 (ya que el cartel dice que tiene ~ 4000 elementos). Encuentra el botón de editar debajo de tu publicación. Muchas gracias.

    – intentar-atrapar-finalmente

    30 de diciembre de 2016 a las 23:33

  • max_rows se aplica a marcos de datos – max_seq_items según la respuesta impiyush, se refiere a las listas.

    – joshi123

    4 de junio de 2018 a las 10:18


  • OP nunca mencionó pandas.

    – sziraqui

    9 de noviembre de 2018 a las 20:41

  • Probablemente debería mencionar pd es el alias que está utilizando para la biblioteca de pandas.

    – Sin nombre

    3 de enero de 2020 a las 20:02

  • No estoy seguro de cómo se relacionan los pandas con la pregunta.

    – ciclobster

    18 de noviembre de 2021 a las 23:14

avatar de usuario de impiyush
impiyush

Sé que es un hilo bastante antiguo, pero aún quería publicar mi respuesta con la esperanza de que ayude a alguien. Puede cambiar el número de max_seq_items se muestra configurando las opciones de pandas de la siguiente manera:

import pandas as pd
pd.options.display.max_seq_items = 2000

  • ¿Dónde ponemos esta pieza? Intenté ponerlo en mi cuaderno pero todavía me muestra esos…

    – Jacob aumentado

    23 de diciembre de 2016 a las 0:33

  • depende de la cantidad de artículos que tengas. Tendrás que jugar un poco con el número.

    – impiyush

    17 de enero de 2017 a las 5:29

  • OP nunca mencionó pandas. Podría ser una simple lista larga o una matriz numpy

    – sziraqui

    9 de noviembre de 2018 a las 20:42

Avatar de usuario de Noah
Noé

Esto debería funcionar:

print(str(mylist))

¡Simple!

  • Gracias. Supongo que usaré declaraciones impresas. Esperaba que hubiera una configuración en el cuaderno de ipython que imprimiera el contenido completo de la variable cuando escribo su nombre.

    – usuario3006135

    8 de mayo de 2014 a las 6:53

  • lo siento, para ser claro, no necesitas el print declaración si no la necesitaba antes, es la conversión a str() eso es importante

    – Noé

    8 mayo 2014 a las 16:10

  • además, parece haber un max_seq_length opción en la fuente de ipython pero no pude encontrar una forma configurable por el usuario para editarlo; podría intentar publicar una solicitud en el rastreador de problemas de ipython

    – Noé

    8 mayo 2014 a las 16:15

  • Gracias por la aclaración y la información sobre la opción max_seq_length.

    – usuario3006135

    10 de mayo de 2014 a las 8:01

  • @sziraqui esto todavía me funciona con versiones recientes de jupyterlab

    – Noé

    10/11/2018 a las 14:00

Cómo deshabilitar el truncamiento de listas en IPython:

  1. Cree un archivo de configuración de IPython si aún no tiene uno:
    ipython profile create
    
  2. Edite el archivo de configuración para incluir esta línea:
    c.PlainTextFormatter.max_seq_length = 0
    
  3. Reinicie su instancia de notebook.

La siguiente línea imprime todo en su lista de manera legible.

[print(x) for x in lis] 

avatar de usuario de dmvianna
dmvianna

Un truco rápido si estás usando pandas es hacer

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

Para los casos en que la salida de print(mylist) es algo como [1, 1, 1, ..., 1, 1, 1] entonces [*mylist] expandirá los elementos en filas donde todos los elementos son visibles.

  • ¡Gran respuesta! Esto también ayuda cuando se imprime en la terminal.

    – cuichi

    19 mayo 2021 a las 15:06

¿Ha sido útil esta solución?