Использование stack в Python

Обзор абстрактного типа данных двухсторонней очереди, которая служит в качестве коллекции элементов и реализована с помощью модуля deque. В окружении программистов обычно называют «стеком».

Что это такое?

Стек — это структура данных, в которой элементы хранится в порядке LIFO (Last-In/First-Out). В стек добавляются и удаляются элементы только с конца. Операции вставки и удаления часто называют push и pop.

Где используется?

  • Команда отменить используемая в текстовых редактора и IDE использует стеки для возврата к предыдущему состоянию.
  • Если вы вызываете функцию внутри другой функции, то управление происходит с помощью стеков.
  • Кнопка назад в веб-браузере запоминает посещаемые страницы в стеке.

Реализация очереди

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

Чтобы избежать этих проблем в модуле коллекций реализован абстрактный тип данных deque.

Использование deque

Двусторонняя очередь или deque, имеет возможность добавлять и удалять элементы с любого из концов.

Модуль deque является частью библиотеки collections. В нем есть методы добавления и удаления элементов, которые могут быть вызваны напрямую с помощью аргументов. В нижеприведенной программе мы импортируем модуль коллекций и объявим deque. Без необходимости какого-либо класса мы используем встроенную реализацию этих методов напрямую.

Загрузим модуль deque

from collections import deque

data = deque()

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

Добавим в очередь элементы

data.append('Красный')
data.append('Синий')
data.append('Черный')
data.append('Белый')

Выведем на печать содержимое нашей очереди

print(data)

deque(['Красный', 'Синий', 'Черный', 'Белый'])

Чтобы получить последний элемент из очереди используем метод pop()

last = data.pop()
print(last)

Белый

Так же у меня есть группа ВКонтакте @yegorovegor. Обязательно подпишись!

Запросив последний элемент из очереди общее количество элементов сократилось на единицу, давайте посмотрим что осталось в очереди

print(data)

deque(['Красный', 'Синий', 'Черный'])

Список доступных методов

Ниже я приведу список доступных методов для работы с двухсторонней очередью.

  • append(z) — добавить элемент z в правую часть
  • appendleft(z) — добавить элемент z в левую часть
  • clear() — удалить все элементы из очереди
  • copy() — создать копию очереди
  • count(z) — посчитать количество элементов равных z
  • extend(iter) — добавить элементы в правую часть из итерируемого объекта
  • extendleft(z) — добавить элементы в левую часть из итерируемого объекта
  • index(z) — вернуть индекс первого элемента или вызвать ValueError если ничего не найдено
  • insert(i, z) — вставить элемент z в положение i
  • pop() — удалить и вернуть элемент
  • popleft() — удалить и вернуть элемент из левой части
  • remove(z) — удалить первый найденный элемент z
  • reverse() — перевернуть очередь

Самое подробное и актуальное руководство по двухсторонней очереди можно найти в официальной документации python -> https://docs.python.org/3/library/collections.html#collections.deque

close

Изучаешь Python?

Оформи подписку и получи моментальный доступ к новым публикациям

Обязательно прочитайте другие статьи посвященные языку программирования Python


GeekUniversity - обучение до уровня Middle с гарантированным трудоустройством


Добавить комментарий

Ваш адрес email не будет опубликован