Что выведет код Middle Стандартная библиотека обновлено
Порядок извлечения из кучи
Вопрос
Что выведет код? По строке на каждый print.
import heapq
tasks = []
heapq.heappush(tasks, (2, 'write'))
heapq.heappush(tasks, (1, 'read'))
heapq.heappush(tasks, (2, 'deploy'))
print([heapq.heappop(tasks)[1] for _ in range(3)])
print(heapq.nlargest(2, [5, 1, 9, 3]))
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: ['read', 'deploy', 'write'], [9, 5]. nlargest возвращает k наибольших по убыванию.
Что выведет
['read', 'deploy', 'write']
[9, 5]
Разбор
nlargest возвращает k наибольших по убыванию. Кортежи сравниваются поэлементно: сначала приоритет, при равенстве строки, поэтому deploy раньше write. Если вторые элементы несравнимы (например, словари), на равных приоритетах будет TypeError, и добавляют счётчик: (priority, seq, task).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.