Сортировка списка по алфавиту без метода сортировки в python более эффективно - PullRequest
0 голосов
/ 10 января 2019

Я работаю над проектом на 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 голосов
/ 10 января 2019

Несколько вещей:

Чтение строк из файла можно сделать более кратко, просто используя 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()

Эта реализация, однако, требует чтения всего файла в памяти. Если вам нужно действительно огромное количество данных (гигабайт), вам, вероятно, лучше использовать более сложный подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...