在 ipython notebook 中自动向下滚动到结果的底部

dle*_*eal 14 python ipython ipython-notebook

有没有办法配置 ipython notebook,这样每当我打印一个长列表时,我会自动看到底部?

例如,在终端中,如果我运行以下命令:

for i in range(1000):
  print i
Run Code Online (Sandbox Code Playgroud)

它会自动滚动到底部:

992
993
994
995
996
997
998
999

In [2]: 
Run Code Online (Sandbox Code Playgroud)

但是在 Python 笔记本中,我看到了开头,我必须手动向下滚动到最后一个数字。

我正在运行一个长循环,每次迭代需要几秒钟,每当我想检查程序有多远时,都不得不向下滚动,这很不方便,

谢谢你,

scr*_*uel 11

推荐: Tampermonkey 插件

(一劳永逸!)
将以下代码复制并粘贴到任何单元格(或控制台,F12),运行它。
执行后,您可以删除单元格,然后继续您的工作!

%%javascript

window.scroll_flag = true
window.scroll_exit = false
window.scroll_delay = 100

$(".output_scroll").each(function() {
    $(this)[0].scrollTop = $(this)[0].scrollHeight;
});

function callScrollToBottom() {
    setTimeout(scrollToBottom, window.scroll_delay);
}

function scrollToBottom() {
    if (window.scroll_exit) {
        return;
    }
    if (!window.scroll_flag) {
        callScrollToBottom();
        return;
    };
    
    $(".output_scroll").each(function() {
        if (!$(this).attr('scroll_checkbox')){
            window.scroll_flag = true;
            $(this).attr('scroll_checkbox',true);
            var div = document.createElement('div');
            var checkbox = document.createElement('input');
            checkbox.type = "checkbox";
            checkbox.onclick = function(){window.scroll_flag = checkbox.checked}
            checkbox.checked = "checked"
            div.append("Auto-Scroll-To-Bottom: ");
            div.append(checkbox);
            $(this).parent().before(div);
        }
        
        $(this)[0].scrollTop = $(this)[0].scrollHeight;
    });
    callScrollToBottom();
}
scrollToBottom();
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试jupyter_contrib_nbextensions的“向下滚动”功能。


bma*_*man -1

我认为 iPython 没有办法做到这一点,但是,如果您使用 Pandas,则可以使用tail函数仅打印最后一条记录。

您甚至可以将数据从 Python 本机元组导入到 Pandas 中:

import pandas as pd
df = pd.DataFrame.from_records(list(range(1000), columns = (id,))
Run Code Online (Sandbox Code Playgroud)

如果你不想使用 Pandas,你可以将所有项目收集到一个列表中,然后只打印最后 10 条记录:

print(list(range(1000))[-10])
Run Code Online (Sandbox Code Playgroud)