Статья Автор: Деникина Н.В., Деникин А.В.

1.3 Порядок и середина — топ-K и порог

Срез после сортировки

«Топ-5 по сборам» получается в два движения: отсортировать по убыванию и взять первые пять срезом [:5].

top = sorted(movies, key=lambda m: int(m["gross"]), reverse=True)[:5]

Срез безопасен: если строк меньше пяти, ошибки не будет — вернётся сколько есть. Это удобно, когда K приходит извне и заранее не известен.


Топ-K и фильтр — разные вопросы

Их постоянно путают. Фильтр отвечает на вопрос про порог: «все фильмы со сборами выше миллиарда». Сколько их окажется — заранее неизвестно, может быть ноль, может быть сотня. Топ-K отвечает на вопрос про количество: «пять самых кассовых». Их всегда ровно пять, каким бы ни было само значение.

Практическое следствие: если тебя просят «лучшие фильмы», надо уточнить, что имеется в виду. Порог даёт список переменной длины, топ-K — фиксированной.

И ещё: ради топ-3 сортировать всю таблицу расточительно — мы упорядочиваем 5378 строк, чтобы взять три. На таких размерах это незаметно, но приём «найти K лучших без полной сортировки» существует, и в старших модулях он нам пригодится.



Что показал вывод

Топ-5 дал ровно пять строк. Фильтр по порогу «больше миллиарда» дал другое число — и заранее мы его не знали.

В этом вся разница. Топ-K — вопрос про количество, ответ фиксированной длины. Порог — вопрос про значение, ответ какой получится. Когда тебя просят «показать лучшие», уточняй, о чём речь: иначе рискуешь ответить не на тот вопрос.


Какие сборы у фильма на втором месте? Один знак после запятой, в миллионах.

Чем топ-K отличается от фильтра по порогу?

Отметь верные утверждения.

Тебя просят показать «самые кассовые фильмы». Что надо уточнить в первую очередь?
Загрузка...
Чтобы оставить комментарий, необходимо авторизоваться
💬
Пока нет комментариев. Будьте первым!
Печать