
Модуль collections в Python: ваш чит-код для решения алгоритмических задач
enamored_poc 4 минуты назад Модуль collections в Python: ваш чит-код для решения алгоритмических задач Простой 9 мин 5 Python * Алгоритмы * Программирование * Спортивное программирование * Туториал Привет, Хабр!Если вы...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. enamored_poc 4 минуты назад Модуль collections в Python: ваш чит-код для решения алгоритмических задач Простой 9 мин 5 Python * Алгоритмы * Программирование * Спортивное программирование * Туториал Привет, Хабр! Если вы хоть раз пытались вкатиться в алгоритмы, решали задачки на LeetCode или готовились к собеседованиям, то наверняка ловили в лицо обидную ошибку Time Limit Exceeded (TLE). Вроде бы логика решения идеальная, на базовых тестах всё работает, но при отправке код отваливается по времени.
Самая классическая причина такой боли у новичков — банальное list. Когда вы пишете эту строчку, чтобы достать первый элемент из очереди, Python не просто забирает значение. Обычный список под капотом — это динамический массив.
Технические детали
Удалив первый элемент, язык вынужден сдвинуть все оставшиеся элементы на одну позицию влево. Если в списке миллион элементов, это миллион операций ради одного удаления. Итог: скрытая сложность там, где вы ожидали быстрый ответ, и проваленный тест.
Перестать использовать стандартные структуры данных там, где они не справляются, и вспомнить про встроенный модуль collections. Вам не нужно писать pip install — это стандартная библиотека Python, которая поставляется из коробки. Разработчики языка уже написали оптимизированные структуры на C, чтобы вы могли эффективно работать с очередями, подсчетами и сложными словарями, не просаживаясь по производительности.
Небольшое лирическое отступление: если вы хотите увереннее писать код на Питоне, понимать, как все устроено под капотом, и просто прокачать базу — заглядывайте на мой авторский и полностью бесплатный курс «ООП Python: Часть 1» на Stepik. Ну а теперь — погнали разбираться с collections! deque: Двусторонняя очередь (Ваш лучший друг для BFS)Теория: Стек, очередь Представьте обычную очередь в кассу супермаркета: кто первый пришел, тот первый и ушел.
Отраслевые последствия
Это принцип FIFO (First In, First Out). А теперь представьте стопку тарелок на кухне: вы берете верхнюю тарелку, которую положили последней. Это стек — LIFO (Last In, First Out).
Обычный питоновский list — это идеальный стек. pop() работают с концом списка мгновенно. Но как только мы пытаемся сделать из него очередь и пишем .
pop(0), всё ломается по производительности. Тут на сцену выходит deque (Double-Ended Queue, читается как «дек»). Это структура, которая берет лучшее от обоих.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





