在python中没有排序方法的情况下按字母顺序对列表进行排序更有效

时间:2019-01-10 02:29:28

标签: python data-structures

我正在研究一个python项目,该项目需要从文件中读取字符串,按字母顺序排序,然后将其写入另一个文件。

我已经有一个可以运行的程序,但是效率低下,我想知道如何改进它。

这是我的代码:

def sorter(list):

    for i in range(len(list)):                                 
        for j in range(len(list) - 1 ):                         
            if list[j] > list[j + 1]:
               list[j], list[j + 1] = list[j + 1], list[j]     

    return list

def main():

    infile = open( 'text.txt', 'r' )   
    data = infile.read()               
    list = data.split()               

    newList = []                        
    for item in list:
        newList.append(item.lower())

    sorter(newList)                    

    with open( 'text2.txt', 'w' ) as f:  
        for item in newList:             
            f.write(" " + item)  

main()    

1 个答案:

答案 0 :(得分:0)

几件事:

仅使用f.readlines()https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects),即可更简洁地读取文件中的行。

分别应在两个文件上with,以便释放不再需要的资源:

def main():

    with open( 'text.txt', 'r' ) as infile:
        data = infile.read().split()

    with open( 'text2.txt', 'w' ) as f:  
        for item in sorted(data):
            f.write(" " + item)  

main()

但是,此实现需要读取内存中的整个文件。如果您需要消耗大量数据(千兆字节),那么采用更复杂的方法可能会更好。