Python collections.deque



In Python, deque() is one of the datatypes, which returns a new deque object initialized left-to-right (using append()) with data from iterable. If iterable is not specified, the new deque is empty.

The deque is implemented using collections module. When we need to perform faster operations like append and pop an element we prefer deque as its time complexity is O(1) time as compared to list that provides O(n) time complexity.

Syntax

Following is the syntax of the Python deque() class −

class collections.deque([iterable[, maxlen]])

Parameters

This data type accepts iterable as a parameter.

Return Value

This datatype returns <class 'collections.deque'> object.

Example

Following is an basic example of Python deque() class −

from collections import deque
d = deque('xyz')
print(d)

Following is the output of the above code −

deque(['x', 'y', 'z'])

Method in deque

Following are the methods present in the deque() class −

Method Function
append(x) Add x to the right side of the deque
appendleft(x) Add x to the left side of the deque
clear() Remove all elements from the deque leaving it with length 0
copy() Create a shallow copy of the deque.
count(x) Count the number of deque elements equal to x
extend(iterable) Extend the right side of the deque by appending elements from the iterable argument
extendleft(iterable) Extend the left side of the deque by appending elements from iterable.
index(x[, start[, stop]]) Return the position of x in the deque (at or after index start and before index stop). Returns the first match or raises ValueError if not found.
insert(i, x) Insert x into the deque at position i
pop() Remove and return an element from the right side of the deque
popleft() Remove and return an element from the left side of the deque. If no elements are present, raises an IndexError.
rotate(n=1) Rotate the deque n steps to the right. If n is negative, rotate to the left
maxlen Maximum size of a deque or None if unbounded
remove(value) Remove the first occurrence of value. If not found, raises a ValueError.
reverse() Reverse the elements of the deque in-place and then return None.

Python deque.append() Method

We can add an element into the deque using append(). The element is added at right end of the deque. The appendleft() is used to add the element at the right end of the deque. Only single element is allowed appended to the deque at once.

Example

Here, we have created deque and appended an element using append() at right of deque. Using appendleft() we have appended an element at left of deque() −

import collections
# initializing deque
deque1 = collections.deque([1, 2, 3])
print("deque: ", deque1)
# using append() to insert element at right end
# inserts 100 at the end of deque
deque1.append(100)
# printing modified deque
print("The deque after appending at right : ",deque1)
# using appendleft() to insert element at left end
# inserts 21 at the beginning of deque
deque1.appendleft(21)
# printing modified deque
print("The deque after appending at left : ",deque1)

Following is the output of the above code −

deque:  deque([1, 2, 3])
The deque after appending at right :  deque([1, 2, 3, 100])
The deque after appending at left :  deque([21, 1, 2, 3, 100])

Python deque.pop() Method

The pop() method in deque is used to remove an element from the end of the deque. The popleft() is used to remove an element at the left end of the deque.

Example

Here, we have removed an element at the right end using pop(). Using popleft() we have removed the left end element from the deque. This method removes only one element at once.

import collections
# initializing deque
deque_1 = collections.deque([60, 11, 42, 93, 74])
print("deque: ", deque_1)
# using pop() to delete element from right end of deque
deque_1.pop()
# printing modified deque
print("The deque after deleting from right : ",deque_1)
# using popleft() to delete element from left 
deque_1.popleft()
# printing modified deque
print("The deque after deleting from left : ",deque_1)

Following is the output of the above code −

deque:  deque([60, 11, 42, 93, 74])
The deque after deleting from right :  deque([60, 11, 42, 93])
The deque after deleting from left :  deque([11, 42, 93])

Python deque.extend() Method

The extend() method with deque is used to add more than one elements at the right end of the deque. The extendleft() is used to add the elements at the right end of the deque.

Example

Following is another example of this class −

import collections
# initializing deque
deque_1 = collections.deque([1, 2, 3])
# using extend() to add numbers to right end 
deque_1.extend([40,50])
# printing modified deque
print ("The deque after extending deque at right end :",deque_1)
# using extendleft() to add numbers to left end 
deque_1.extendleft([70,80])
# printing modified deque
print ("The deque after extending deque at left end: ",deque_1)

Following is the output of the above code −

The deque after extending deque at right end : deque([1, 2, 3, 40, 50])
The deque after extending deque at left end:  deque([80, 70, 1, 2, 3, 40, 50])

Python deque.rotate() Method

The rotate() method rotates the deque by the number specified in arguments. If the number specified is negative, rotation occurs to the left. Else rotation is to right.

Example

Here, we have created a deque and performed rotation operation on deque. When we passed a negative value rotation occurred from left and when a positive value is passed rotation occurred from right −

from collections import deque
#defined deque
deque_1=deque([1,2,3,4])
#left rotation of deque 
deque_1.rotate(-1)
print("Left Rotation Of deque :",deque_1)
#right rotating of deque
deque_1.rotate(2)
print("Right Rotation Of deque :",deque_1)

Following is the output of the above code −

Left Rotation Of deque : deque([2, 3, 4, 1])
Right Rotation Of deque : deque([4, 1, 2, 3])
python_modules.htm
Advertisements