程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 5.3.3 deque對象

5.3.3 deque對象

編輯:C++入門知識

5.3.3 deque對象


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

返回一個新雙向隊列,當有輸入迭代器時,會從左至右地添加到隊列裡。如果沒有輸入參數,就創建一個空隊列。

deque是一個具有棧和隊列特性的數據結構。它支持線程安全、內存優化和兩端彈出、插入元素,無論從那一個方向彈出元素都是O(1)的時間花費。在內置的數據類型list也支持相關的操作,但是它設計為對固定元素進行操作,如果插入和彈出一個元素,它的內存操作時間花費是o(n)。如果參數maxlen沒有指定,或者指定為None,它的長度是任意的,如果有指定長度,就不能添加元素超過指定長度。如果隊列已經達到指定長度,從一端添加一個元素,就會從另一端彈出一個元素,從而保持元素不變。因而它非常適合跟蹤最後活動對象的場合。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.append(1)

print(dq)

結果輸出如下:

deque([1], maxlen=5)

deque主要支持以下方法:

append(x)

添加元素x到隊列的右邊。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.append(1)

dq.append(2)

dq.append(3)

print(dq)

結果輸出如下:

deque([1, 2, 3], maxlen=5)

appendleft(x)

添加元素x到隊列左邊。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.appendleft(1)

dq.appendleft(2)

dq.appendleft(3)

print(dq)

結果輸出如下:

deque([3, 2, 1], maxlen=5)

clear()

清除隊列裡所有元素。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.appendleft(1)

dq.appendleft(2)

dq.appendleft(3)

print(dq)

dq.clear()

print(dq)

結果輸出如下:

deque([3, 2, 1], maxlen=5)

deque([], maxlen=5)

count(x)

計算隊列元素的個數是否等於x個,如果大於或等於都返回True,否則返回False。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.append(1)

dq.append(2)

dq.append(3)

print(dq)

print(dq.count(1))

print(dq.count(2))

print(dq.count(3))

print(dq.count(6))

結果輸出如下:

deque([1, 2, 3], maxlen=5)

1

1

1

0

extend(iterable)

從右邊擴展隊列,參數是迭代器對象。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.append(1)

dq.append(2)

dq.append(3)

print(dq)

dq.extend([7, 8, 9])

print(dq)

結果輸出如下:

deque([1, 2, 3], maxlen=5)

deque([2, 3, 7, 8, 9], maxlen=5)

extendleft(iterable)

從左邊添加迭代對象裡的元素。注意添加順序與迭代對象順序剛好相反。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.append(1)

dq.append(2)

dq.append(3)

print(dq)

dq.extendleft([7, 8, 9])

print(dq)

結果輸出如下:

deque([1, 2, 3], maxlen=5)

deque([9, 8, 7, 1, 2], maxlen=5)

pop()

從右邊刪除一個元素,並且把這個元素返回。如果隊列為空,拋出異常IndexError。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.append(1)

dq.append(2)

dq.append(3)

print(dq)

dq.pop()

print(dq)

輸出結果如下:

deque([1, 2, 3], maxlen=5)

deque([1, 2], maxlen=5)

popleft()

從左邊刪除一個元素,並把這個元素返回。如果是空隊列會拋出異常IndexError。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.append(1)

dq.append(2)

dq.append(3)

print(dq)

dq.popleft()

print(dq)

結果輸出如下:

deque([1, 2, 3], maxlen=5)

deque([2, 3], maxlen=5)

remove(value)

刪除指定值value的元素,如果沒有找到,會拋出異常IndexError。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.append(9)

dq.append(2)

dq.append(3)

dq.append(8)

print(dq)

dq.remove(9)

print(dq)

結果輸出如下:

deque([9, 2, 3, 8], maxlen=5)

deque([2, 3, 8], maxlen=5)

reverse()

把所有元素進行反向排序,返回None。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.append(9)

dq.append(2)

dq.append(3)

dq.append(8)

print(dq)

dq.reverse()

print(dq)

結果輸出如下:

deque([9, 2, 3, 8], maxlen=5)

deque([8, 3, 2, 9], maxlen=5)

rotate(n)

如果n是正值,則從右邊彈出元素,插入到左邊,n是代表操作幾次。如果n是負值,剛好相反,表示從左邊彈出元素,插入到右邊。大體上等於d.appendlef(d.pop())。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.append(9)

dq.append(2)

dq.append(3)

dq.append(8)

print(dq)

dq.rotate(2)

print(dq)

dq.rotate(-2)

print(dq)

結果輸出如下:

deque([9, 2, 3, 8], maxlen=5)

deque([3, 8, 9, 2], maxlen=5)

deque([9, 2, 3, 8], maxlen=5)

deque類提供一個只讀的屬性:

maxlen

返回列表允許的最大長度,如果沒有設置返回None。

例子:

#python 3.4

import collections

dq = collections.deque(maxlen = 5)

dq.append(9)

dq.append(2)

dq.append(3)

dq.append(8)

print(dq.maxlen)

結果輸出如下:

5

deque類支持迭代、選取、len(d)、reversed(d)、copy.copy(d)、copy.deepcopy(d)等操作,同時也支持in操作符,以使用索引d[-1]的操作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved