2016-04-03 2 views
0

Я начинающий программист, и я пытаюсь сделать упражнение. Я хочу сортировать целочисленный список, но каждый раз, когда я запускаю свой код, список не сортируется. Я попробовал это несколькими способами с помощью отсортированных() или .sort(), но ничего не помогает.Сортировка целочисленного списка в Python

def main(): 

    _list1_ = [] 
    _list2_ = [] 

    print("Enter random numbers and enter Q to quit: ") 
    userInput1 = input("") 
    while userInput1.upper() != "Q": 
     _list1_.append(int(userInput1)) 
     userInput1 = input("") 

    print("Enter random numbers and enter Q to quit:") 
    userInput2 = input("") 
    while userInput2.upper() != "Q": 
     _list2_.append(int(userInput2)) 
     userInput2 = input("") 

    sorted(_list1_) 
    sorted(_list2_) 

    print(_list1_) 

main() 

Спасибо!

ответ

4

sorted() не сортирует список на месте. Она возвращает отсортированный список, так что вам нужно будет изменить 2 sorted() звонков на что-то вроде этого:

_list1_ = sorted(_list1_) 
_list2_ = sorted(_list2_) 

Это всегда хорошая идея, чтобы прочитать документацию, чтобы получить представление о том, как работает функция. Вот Документы для сортировки https://docs.python.org/2/library/functions.html#sorted

+4

'_list_1.sort()' и '_list2_.sort()' будут делать это на месте. Приятно отметить это. – idjaw

+0

Специально потому, что 'sorted' выделяет новый список, поэтому требуется дополнительная память. – saeedgnu

0
sorted(_list1_) 

возвращает список после сортировки list1, Это не сортирует list1. так пишут

print(sorted(_list1_)) 

или назначить отсортированный list1 в list1, как

_list1_ = sorted(_list1_) 
2

sorted возвращает отсортированный список, тогда как sort выполняет сортировку на месте.

Таким образом, вы можете либо сделать:

_list1_ = sorted(_list_) 

или:

_list1_.sort() 

Если вы использовали sort (мой предпочтительный метод) код будет выглядеть следующим образом:

def main(): 

    _list1_ = [] 
    _list2_ = [] 

    print("Enter random numbers and enter Q to quit: ") 
    userInput1 = input("") 
    while userInput1.upper() != "Q": 
     _list1_.append(int(userInput1)) 
     userInput1 = input("") 

    print("Enter random numbers and enter Q to quit:") 
    userInput2 = input("") 
    while userInput2.upper() != "Q": 
     _list2_.append(int(userInput2)) 
     userInput2 = input("") 

    _list1_.sort() 
    _list2_.sort() 

    print(_list1_) 

main() 
Смежные вопросы