Применение сортировки
В Python есть две функции сортировки: sorted()
и sort()
.
Ключевое отличие между функцией sorted()
и методом sort()
в Python заключается в том, что метод sort()
изменяет исходный список, сортируя его элементы на месте (in-place sorting), тогда как функция sorted()
создает новый отсортированный список на основе исходного, не изменяя исходный список.
Поэтому, если вам нужно сохранить исходную последовательность без изменений, следует использовать функцию sorted()
. Если же вы не нуждаетесь в оригинальном порядке элементов списка и готовы изменить сам список, используйте метод sort()
.
Примеры использования
Две описанные функции имеют одинаковые параметры, которые помогают записывать правила сортировки. Отличие в указании параметров одно. В функции
sorted()
первый параметр - это тот список, который мы сортируем.
# Сортировка списка чисел по возрастанию с сохранением результата в новый список
nums = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_nums = sorted(nums)
print(sorted_nums)
Выполним сортировку списка слов, с использованием метода
sort()
. Обратите внимание, строки по умолчанию сортируются в лексикографическом порядке (то есть по алфавиту)
# Сортировка списка строк в алфавитном порядке
fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig']
sorted_fruits = sorted(fruits)
print(sorted_fruits)
# Результат: ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig']
Чтобы отсортировать список по убыванию значений, необходимо указать параметр
reverse
и присвоить ему значение
True
# Сортировка списка чисел по убыванию
nums = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
nums.sort(reverse=True)
print(nums)
# Результат: [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
Для более сложных правил сортировки используется параметр
key
. Он позволяет задать функцию, которая будет применяться к каждому элементу списка перед его сортировкой. Как результат, сортировка будет производиться на основе значений, возвращаемых этой функцией.
Лямбда-функции в Python - это анонимные функции, которые могут быть определены в одной строке. Функция
lambda
принимает аргументы и возвращает выражение. Их можно использовать в качестве параметра
key
для функции сортировки.
# Создаем список чисел
numbers = [15, 22, 18, 11, 19, 24]
# Сортируем список по возрастанию с помощью лямбда-функции
sorted_numbers = sorted(numbers, key=lambda x: x % 10)
print(sorted_numbers)
# Результат: [11, 22, 24, 15, 18, 19]
Отсортируем список слов по длине
# Создаем список слов
words = ["apple", "banana", "cherry", "date", "elderberry"]
# Сортируем список по длине слова с помощью лямбда-функции
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)
# Результат: ['date', 'apple', 'banana', 'cherry', 'elderberry']
В Python вы можете определить собственную функцию, которая будет использоваться в качестве значения параметра key для функции сортировки. Это позволяет более гибко настроить сортировку в соответствии с вашими потребностями.
# Создаем список чисел
numbers = [58, 24, 17, 39, 62, 43]
# Функция для получения последней цифры числа
def get_last_digit(number):
return number % 10
# Сортируем список по последней цифре числа с помощью функции get_last_digit
sorted_numbers = sorted(numbers, key=get_last_digit)
print(sorted_numbers)
# Результат: [58, 39, 62, 43, 24, 17]