Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在输出窗口中显示迭代次数_Python_List_Iteration - Fatal编程技术网

Python 在输出窗口中显示迭代次数

Python 在输出窗口中显示迭代次数,python,list,iteration,Python,List,Iteration,在python中,我试图对大量列表进行排序需要花费很长时间(约15秒)来排序 我想知道是否有任何方法可以向用户指示实时排序的元素数量,而不必为每个完成的迭代打印新行 因此,我们没有: 2300 elements sorted 2301 elements sorted ... 只有一行: x+ elements sorted 如果我把术语弄错了,我提前道歉。 提前感谢您的帮助 编辑:排序算法 def insertionSort(allData, key): for i in range

在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
def insertionSort(所有数据,键):
对于范围(1,len(allData))中的i:
j=i
而j>0和allData[j][key]
您可以使用Python3中的print函数来完成。将行结尾(Unix上为“\n”,Windows上为“\r\n”)替换为“\r”,回车符。这会将光标移动到屏幕的左侧,但保持在同一行上

import os

x = 1000000

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

对于Python2.x,您可以使用

from __future__ import print_function
获取新的打印功能


在GNOME终端中,打印时光标会闪烁,我认为这会分散注意力,所以我用

os.system('setterm -cursor off')
然后又回来了

os.system('setterm -cursor on')

这可能因系统而异

您是使用
sorted(list)
还是
list.sort()
或某种自定义排序技术执行排序?因为前者并没有真正公开它们的内部“迭代”,也许应该指定,我正在使用我自己的排序算法如果你可以发布你的算法,请执行我不遵循的soPerhaps,但你的建议似乎仍然会导致成千上万的打印语句