На этом шаге мы рассмотрим различные способы сортировки списка.
Отсортировать список позволяет метод sort (). Он имеет следующий формат:
sort([key=None][, reverse=False])
Все параметры не являются обязательными. Метод изменяет текущий список и ничего не возвращает. Отсортируем список по возрастанию с параметрами по умолчанию:
>>> arr = [2, 7, 10, 4, 6, 8, 9, 3, 1, 5] >>> arr.sort() # Изменяет текущий список >>> arr [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Чтобы отсортировать список по убыванию, следует в параметре reverse указать значение True:
>>> arr = [2, 7, 10, 4, 6, 8, 9, 3, 1, 5] >>> arr.sort(reverse=True) # Сортировка по убыванию >>> arr [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Надо заметить, что стандартная сортировка зависит от регистра символов. Проиллюстрируем это следующим примером.
arr = ["единица1", "Единый", "Единица2"] arr.sort() for i in arr: print(i, end=" ")
Результат вьполнения приведен на рисунке 1:
Рис.1. Результат выполнения
В результате мы получили неправильную сортировку, ведь "Единый" и "Единица2" больше "единица1". Чтобы регистр символов не учитывался, можно указать ссылку на функцию для изменения регистра символов в параметре key:
arr = ["единица1", "Единый", "Единица2"] arr.sort(key=str.lower) # Указываем метод lower for i in arr: print(i, end=" ")
Результат вьполнения приведен на рисунке 2:
Рис.2. Результат выполнения
В параметре key можно указать функцию, выполняющую какое-либо действие над каждым элементом списка. В качестве единственного параметра она должна принимать значение очередного элемента списка, а в качестве результата - возвращать результат действий над ним. Этот результат будет участвовать в процессе сортировки, но значения самих элементов списка не изменятся.
Метод sort () сортирует сам список и не возвращает никакого значения. В некоторых случаях необходимо получить отсортированный список, а текущий список оставить без изменений. Для этого следует воспользоваться функцией sorted (). Функция имеет следующий формат:
sorted(<Последовательность>[, key=None][, reverse=False])
В первом параметре указывается список, который необходимо отсортировать. Остальные параметры эквивалентны параметрам метода sort (). Пример использования функции sorted () приведен ниже:
>>> arr = [2, 7, 10, 4, 6, 8, 9, 3, 1, 5] >>> sorted(arr) # Возвращает новый список! [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> sorted(arr, reverse=True) # Возвращает новый список! [10, 9, 8, 7, б, 5, 4, 3, 2, 1] >>> arr = ["единица1", "Единый", "Единица2"] >>> sorted(arr, key=str.lower) ['единица1', 'Единица2', 'Единый']
На следующем шаге мы рассмотрим заполнение списка числами.