Метод
sort() сортирует список по возрастанию (по умолчанию).Чтобы
sort() работал, элементы списка должны быть одного типа. Нельзя сортировать список со смешанными типами данных, например числа и строки.У метода
sort() есть параметр reverse; чтобы отсортировать список по убыванию, установите reverse=True.list1 = [2, 5, 6, 8, 1, 8, 9, 11]
list1.sort(reverse=True)
print(list1)
# [11, 9, 8, 8, 6, 5, 2, 1]
Помните:
sort() это строго метод списка (list). Его нельзя использовать для сортировки set, tuple, string или dictionary.Метод
sort() не возвращает новый список; он сортирует существующий список на месте (in place).Если вы попробуете создать новый объект с помощью
sort(), он вернет None. Пример ниже:list1 = [2, 5, 6, 8, 1, 8, 9, 11]
list2 = list1.sort(reverse=True)
print(list2)
# None
У метода
sort() есть необязательный параметр key, который позволяет настроить поведение сортировки.Этот параметр используется для передачи функции, которая задает критерий сортировки элементов списка.
В примере ниже у нас список кортежей, и мы хотим отсортировать его по возрасту студента. Используя параметр
key вместе с lambda-функцией, можно реализовать такую кастомную сортировку. См. ниже:students = [
("Alice", 22),
("Bob", 20),
("Charlie", 24)
]
# Сортируем студентов по возрасту, используя lambda-функцию как key
students.sort(key=lambda students: students[1])
print(students)
# [('Bob', 20), ('Alice', 22), ('Charlie', 24)]
Метод
sort() является стабильным (stable), то есть сохраняет относительный порядок равных элементов в отсортированном списке.Если у двух элементов одинаковый ключ сортировки, их исходный порядок сохраняется. Например, если у
"Alice" и "Bob" одинаковый возраст, их порядок останется прежним. Это и называется стабильной сортировкой (stable sorting). См. пример:students = [
("Alice", 22),
("Bob", 22),
("Charlie", 24)
]
# Сортируем студентов по возрасту, используя lambda-функцию как key
students.sort(key=lambda students: students[1])
print(students)
# [('Alice', 22), ('Bob', 22), ('Charlie', 24)]
Как видно, порядок элементов
"Alice" и "Bob" не изменился, потому что у них одинаковый возраст.👉 @PythonPortal #100daysofpython