Типичная проблема, с которой сталкиваются программисты на Python — необходимость отсортировать список объектов по одному из атрибутов объекта. Возьмем для примера список объектов класса Book, где каждый объект имеет атрибуты title и pages.
class Book:
def __init__(self, title, pages):
self.title = title
self.pages = pages
books = [
Book('War and Peace', 1225),
Book('The Catcher in the Rye', 277),
Book('To Kill a Mockingbird', 281),
Book('1984', 328)
]
Задача состоит в том, чтобы отсортировать этот список по количеству страниц (pages) в порядке убывания.
Существует несколько способов решения этой задачи на Python. Один из самых удобных и популярных — использование встроенной функции sort() или функции sorted(). Обе эти функции принимают ключевой аргумент key, который определяет по какому принципу будет происходить сортировка.
books.sort(key=lambda book: book.pages, reverse=True)
В этом примере lambda-функция используется для определения атрибута, по которому будет происходить сортировка (book.pages). Аргумент reverse=True указывает на то, что сортировка должна быть выполнена в порядке убывания.
Теперь список книг отсортирован по количеству страниц, начиная с самой объемной:
for book in books:
print(book.title, book.pages)
На выходе получаем:
War and Peace 1225
1984 328
To Kill a Mockingbird 281
The Catcher in the Rye 277
Стоит отметить, что функция sort() сортирует список на месте (т.е. изменяет исходный список), в то время как функция sorted() возвращает новый отсортированный список, не меняя исходный.
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий