Python - AI 助手

Python collections.deque



在 Python 中,**deque()** 是一種資料型別,它返回一個新的 deque 物件,該物件使用來自可迭代物件的 資料從左到右初始化(使用 append())。如果未指定可迭代物件,則新的 deque 為空。

**deque** 使用 **collections** 模組實現。當我們需要執行更快的操作,例如追加和彈出元素時,我們更傾向於使用 **deque**,因為它的時間複雜度為 O(1),而 **list** 的時間複雜度為 O(n)。

語法

以下是 Python **deque()** 類的語法:

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

引數

此資料型別接受可迭代物件作為引數。

返回值

此資料型別返回 **** 物件。

示例

以下是 Python **deque()** 類的基本示例:

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

以下是上述程式碼的輸出:

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

deque 中的方法

以下是 deque() 類中存在的方法:

方法 功能
append(x) 將 x 新增到 deque 的右側
appendleft(x) 將 x 新增到 deque 的左側
clear() 刪除 deque 中的所有元素,使其長度為 0
copy() 建立 deque 的淺複製。
count(x) 計算 deque 中等於 x 的元素個數
extend(iterable) 透過追加來自 iterable 引數的元素來擴充套件 deque 的右側
extendleft(iterable) 透過追加來自 iterable 的元素來擴充套件 deque 的左側。
index(x[, start[, stop]]) 返回 x 在 deque 中的位置(在索引 start 或之後,在索引 stop 之前)。返回第一個匹配項,如果未找到則引發 ValueError。
insert(i, x) 在位置 i 將 x 插入到 deque 中
pop() 刪除並返回 deque 右側的一個元素
popleft() 刪除並返回 deque 左側的一個元素。如果沒有元素,則引發 IndexError。
rotate(n=1) 將 deque 向右旋轉 n 步。如果 n 為負數,則向左旋轉
maxlen deque 的最大大小,如果無界則為 None
remove(value) 刪除 value 的第一次出現。如果未找到,則引發 ValueError。
reverse() 就地反轉 deque 的元素,然後返回 None。

Python deque.append() 方法

我們可以使用 **append()** 將元素新增到 deque 中。元素新增到 deque 的右端。**appendleft()** 用於將元素新增到 deque 的左端。一次只能將單個元素新增到 deque 中。

示例

在這裡,我們建立了 deque 並使用 **append()** 在 deque 的右側添加了一個元素。使用 **appendleft()**,我們在 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)

以下是上述程式碼的輸出:

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() 方法

deque 中的 **pop()** 方法用於從 deque 的末尾刪除元素。**popleft()** 用於刪除 deque 左端的元素。

示例

這裡,我們使用pop()方法刪除了右側末尾的元素。使用popleft()方法,我們刪除了雙端佇列左側末尾的元素。此方法一次只刪除一個元素。

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)

以下是上述程式碼的輸出:

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() 方法

deque 的extend()方法用於在雙端佇列的右側末尾新增多個元素。extendleft()方法用於在雙端佇列的左側末尾新增元素。

示例

以下是此類的另一個示例:

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)

以下是上述程式碼的輸出:

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() 方法

rotate()方法根據引數中指定的數字旋轉雙端佇列。如果指定的數字為負數,則向左旋轉;否則向右旋轉。

示例

這裡,我們建立了一個雙端佇列並在其上執行了旋轉操作。當我們傳遞一個負數時,從左側旋轉;當傳遞一個正數時,從右側旋轉:

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)

以下是上述程式碼的輸出:

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