0Pricing
Python Academy · Урок

deque

Используйте быстрые двусторонние очереди

«deque» — бесплатный урок Python Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Что такое двусторонняя очередь

deque (произносится «дэк») — это двусторонняя очередь из модуля collections. Она поддерживает быстрое добавление и извлечение элементов с обоих концов.

Импортируйте её с помощью from collections import deque.

from collections import deque
d = deque([1, 2, 3])
print(d)

Почему не использовать просто список

Списки медленно вставляют и удаляют элементы с начала, потому что каждый элемент должен сдвинуться. deque выполняет операции с началом за постоянное время, поэтому идеально подходит для очередей.

from collections import deque
d = deque(['b', 'c'])
d.appendleft('a')
print(d)

Добавление с обоих концов

Используйте .append(), чтобы добавлять элементы справа, и .appendleft(), чтобы добавлять их слева.

from collections import deque
d = deque()
d.append(1)
d.append(2)
d.appendleft(0)
print(d)

Извлечение с обоих концов

.pop() удаляет и возвращает крайний правый элемент, а .popleft() удаляет крайний левый. Оба метода работают быстро.

from collections import deque
d = deque([10, 20, 30])
print(d.pop())
print(d.popleft())
print(d)

Простая очередь (FIFO)

Чтобы реализовать принцип «первым пришёл — первым ушёл», добавляйте элементы справа, а извлекайте с помощью popleft слева. Элементы будут выходить в порядке их поступления.

from collections import deque
queue = deque()
queue.append('first')
queue.append('second')
print(queue.popleft())
print(queue.popleft())

Дек ограниченного размера

Задайте maxlen, чтобы ограничить размер. Когда дек заполнен, добавление элемента с одного конца автоматически удаляет элемент с другого — это удобно для хранения недавней истории.

from collections import deque
recent = deque(maxlen=3)
for n in [1, 2, 3, 4, 5]:
    recent.append(n)
print(recent)

Циклический сдвиг элементов

.rotate(n) сдвигает элементы вправо на n шагов, а отрицательное значение n выполняет сдвиг влево. Элементы перемещаются по кругу.

from collections import deque
d = deque([1, 2, 3, 4, 5])
d.rotate(2)
print(d)
d.rotate(-1)
print(d)

Массовое добавление

.extend() добавляет множество элементов справа, а .extendleft() — слева. Обратите внимание: extendleft меняет порядок добавляемых элементов на обратный.

from collections import deque
d = deque([3])
d.extend([4, 5])
d.extendleft([2, 1])
print(d)

Индексация и длина

Дек поддерживает индексацию, как список, и работает с len(). Доступ к середине выполняется медленнее, чем к концам, поэтому предпочтительнее операции с концами.

from collections import deque
d = deque(['a', 'b', 'c'])
print(d[0])
print(d[-1])
print(len(d))

Очистка и обращение порядка

.reverse() разворачивает дек на месте, а .clear() очищает его. Оба метода изменяют дек непосредственно.

from collections import deque
d = deque([1, 2, 3])
d.reverse()
print(d)
d.clear()
print(d)

Подсчёт вхождений

Как и у списка, у дека есть метод .count(), который подсчитывает, сколько раз встречается значение.

from collections import deque
d = deque([1, 2, 2, 3, 2])
print(d.count(2))

Быстрая проверка

Вы создаёте очередь FIFO с помощью дека. Какая пара методов обеспечивает правильный порядок «первым пришёл — первым ушёл»?

Повторение: дек

Вы узнали, что deque:

  • Поддерживает быстрые операции append/pop с обоих концов, в отличие от списка.
  • Имеет методы appendleft и popleft для работы с левой стороной.
  • Может иметь ограниченный размер с помощью maxlen, сохраняя только недавние элементы.
  • Предоставляет rotate, extend, reverse и count для работы с очередями.
from collections import deque
q = deque(maxlen=2)
for x in ['a', 'b', 'c']:
    q.append(x)
print(q)

Часто задаваемые вопросы

Урок «deque» бесплатный?

Да — полный текст урока «deque» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «deque»?

Используйте быстрые двусторонние очереди Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «deque»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple и OrderedDict
← Назад к Python Academy