Deque - двунаправленная очередь
<p>Deque (Double Ended Queue) представляет собой двустороннюю очередь, которая позволяет выполнять операции добавления и удаления элементов как в начало, так и в конец структуры данных. В языке программирования Python deque реализуется с помощью класса collections.deque.</p> <p>Для начала работы с deque необходимо импортировать соответствующий модуль collections:</p> <pre class="hljs"><span class="hljs-keyword">from</span> collections <span class="hljs-keyword">import</span> deque
</pre>
<p>После этого можно создать экземпляр deque, указав начальные значения (если необходимо):</p>
<pre class="hljs">
my_deque = deque([1, 2, 3, 4, 5])
</pre>
<p>Операции добавления элементов в deque:</p>
<ol>
<li>Добавление элемента в конец deque с помощью метода append():</li>
<pre class="hljs">
my_deque.append(6)
</pre>
<p>Теперь после выполнения этой операции deque будет выглядеть так: deque([1, 2, 3, 4, 5, 6])</p>
<li>Добавление элемента в начало deque с помощью метода appendleft():</li>
<pre class="hljs">
my_deque.appendleft(0)
</pre>
<p>Теперь после выполнения этой операции deque будет выглядеть так: deque([0, 1, 2, 3, 4, 5, 6])</p>
</ol>
<p>Операции удаления элементов из deque:</p>
<ol>
<li>Удаление элемента из конца deque с помощью метода pop():</li>
<pre class="hljs">
my_deque.pop()
</pre>
<p>После выполнения этой операции последний элемент 6 удалится, и deque будет выглядеть так: deque([0, 1, 2, 3, 4, 5])</p>
<li>Удаление элемента из начала deque с помощью метода popleft():</li>
<pre class="hljs">
my_deque.popleft()
</pre>
<p>После выполнения этой операции первый элемент 0 удалится, и deque будет выглядеть так: deque([1, 2, 3, 4, 5])</p>
</ol>
<p>Операции доступа к элементам deque:</p>
<ol>
<li>Получение первого элемента deque с помощью индексации:</li>
<pre class="hljs">
first_element = my_deque[0]
</pre>
<p>В данном примере first_element будет равен 1.</p>
<li>Получение последнего элемента deque с помощью индексации:</li>
<pre class="hljs">
last_element = my_deque[-1]
</pre>
<p>В данном примере last_element будет равен 5.</p>
</ol>
<p>Также deque поддерживает операции перебора элементов с помощью цикла for:</p>
<pre class="hljs">
<code>for element in my_deque:
print(element)
</code></pre>
<p>Этот цикл выведет все элементы deque по порядку.</p>
<p>Deque предлагает эффективный способ добавлять и удалять элементы с обоих концов, что особенно полезно в ситуациях, когда нужно обрабатывать данные в виде очереди или стека. Он также обеспечивает дополнительные возможности, такие как вставка элементов в середину deque, получение длины deque и проверка наличия элементов.</p>
<p>Вот небольшой пример, демонстрирующий использование deque для решения задачи:</p>
<pre class="hljs">
<code>from collections import deque
# Создаем пустой deque
my_deque = deque()
# Добавляем элементы в конец
my_deque.append(1)
my_deque.append(2)
my_deque.append(3)
# Добавляем элементы в начало
my_deque.appendleft(0)
my_deque.appendleft(-1)
my_deque.appendleft(-2)
# Удаляем элемент из конца
my_deque.pop()
# Удаляем элемент из начала
my_deque.popleft()
# Выводим элементы
for element in my_deque:
print(element)
</code></pre>
<p>Этот код выведет элементы -2, -1, 0, 1, 2 в консоль.</p>
<p>Используя deque, вы можете эффективно выполнять операции добавления и удаления элементов в начале и конце очереди. Это делает его удобным инструментом при работе с последовательностями данных, требующими быстрого доступа к двум концам.</p>