TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.4K subscribers
Post #7808 2.51K
Стек и очередь в Python: и почему list не всегда правильный выбор

Большинство питонистов используют list для всего подряд.

Но у list есть конкретная асимптотика, и игнорировать её — значит писать медленный код.

📋 Stack (LIFO) → list

append() и pop() работают за O(1). Список оптимизирован именно для работы с концом:

stack = []
stack.append(1)
stack.append(2)
stack.append(3)
stack.pop() # → 3
stack.pop() # → 2


А вот insert(0, x) и pop(0) — это O(n). Каждый раз сдвигается весь массив:

# Медленно — 200k итераций занимают несколько секунд
for n in range(200_000):
numbers.insert(0, n)

# Быстро — то же количество итераций, мгновенно
for n in range(200_000):
numbers.append(n)



🔄 Queue (FIFO) → deque

Если нужна очередь — берите collections.deque. Операции с обоих концов работают за O(1):

from collections import deque

queue = deque()
queue.append(1) # добавить справа
queue.append(2)
queue.append(3)
queue.popleft() # → 1 (первый вошёл — первый вышел)
queue.popleft() # → 2


deque — это double-ended queue. Можно добавлять и удалять с обоих концов эффективно:


queue.appendleft(0) # добавить слева — O(1)
queue.pop() # удалить справа — O(1)
queue.popleft() # удалить слева — O(1)



Правило одной строкой

Нужен стек → list. Нужна очередь → deque. Использовать list как очередь через pop(0) — это O(n) на каждую операцию.

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
  • 👍 10
  • ❤ 2
  • 🤩 1
More from @pyproglib
  1. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
  2. Sep 19, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Sep 15, 2026⏱️ Справочник по Big-O в Python Для тех, кто хочет писать не просто работающий, а эффектив…
  5. Sep 14, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
  6. Sep 13, 2026🌸 Вселенная намекает: пора уже начать этот курс С 14 сентября цены в Proglib Academy выра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →