在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
答案 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')
这可能因系统而异