显示输出窗口中的迭代次数

时间:2014-11-28 22:50:04

标签: python list iteration

在python中,我正在尝试排序的大量列表需要很长时间(约15秒)才能排序。

我想知道是否有任何方法可以向用户显示实时排序的元素数量,而无需为每个完成的迭代打印出新行。

所以不要:

2300 elements sorted
2301 elements sorted
...

只有一行:

x+ elements sorted
如果我搞砸了这个术语,我会提前道歉。 并提前感谢您的帮助!

编辑:排序算法

def insertionSort(allData, key):
    for i in range(1, len(allData)):
        j = i
        while j > 0 and allData[j][key] < allData[j-1][key]:
            allData[j], allData[j-1] = allData[j-1], allData[j]
            j -= 1

1 个答案:

答案 0 :(得分:2)

您可以使用python 3中的print函数来替换。替换行结尾,在Unix上为'\ n'或在Windows上为“\ r \ n”,使用'\ r',回车< / strong>即可。这会将光标移动到屏幕的左侧,但会将其保持在同一条线上。

import os

x = 1000000

print( "Sorting List:" )
for i in range( 0, x ):
    print( str( i ) + "/" + str( x ) + " elements sorted", end='\r' )

对于python 2.x,您可以使用

from __future__ import print_function

获取新的打印功能


在GNOME终端中,光标在打印时闪烁,我认为这让人分心,所以我把它关掉了

os.system('setterm -cursor off')

然后再次使用

os.system('setterm -cursor on')

这可能因系统而异