Python python對象 deque


# deque對象
'''
class collections.deque([ iterable [,maxlen ] ] )
返回一個從左到右(使用append())初始化的新deque對象,其中包含來自iterable的數據。如果未指定iterable,則新的deque為空。

Deques是堆棧和隊列的概括(名稱發音為“deck”,是“雙端隊列”的縮寫)。Deques支持線程安全,內存有效的附加和從雙端隊列的彈出,在任一方向上具有大致相同的O(1)性能。

盡管list對象支持類似的操作,但它們針對快速固定長度操作進行了優化,並且導致O(n)內存移動成本pop(0)和操作,這些成本 改變了底層數據表示的大小和位置。insert(0, v)

如果未指定maxlenNone,則deques可能會增長到任意長度。否則,雙端隊列限制為指定的最大長度。一旦有界長度雙端隊列已滿,當添加新項目時,從對方端丟棄相應數量的項目。有界長度deques提供類似於tailUnix中的過濾器的功能。它們還可用於跟蹤僅涉及最近活動的事務和其他數據池。

Deque對象支持以下方法:

append(x )
將x添加到雙端隊列的右側。

appendleft(x )
將x添加到雙端隊列的左側。

clear()
刪除deque中的所有元素,使其長度為0。

copy()
創建雙端隊列的淺表副本。

版本3.5中的新功能。

count(x )
計算deque元素的數量等於x。

版本3.2中的新功能。

extend(可迭代的)
通過附加可迭代參數中的元素來擴展雙端隊列的右側。

extendleft(可迭代的)
通過附加來自iterable的元素來擴展雙端隊列的左側。注意,左邊追加的系列會導致反轉迭代參數中元素的順序。

index(x [,start [,stop ] ] )
返回deque 中x的位置(在索引開始時或 索引停止之前)。返回第一個匹配或ValueError如果未找到則引發 。

版本3.5中的新功能。

insert(i,x )
將x插入位置i的雙端隊列中。

如果插入會導致有界雙端超過maxlen,IndexError則會引發a。

版本3.5中的新功能。

pop()
從雙端隊列的右側移除並返回一個元素。如果沒有元素,則提出一個IndexError。

popleft()
從雙端隊列的左側移除並返回一個元素。如果沒有元素,則提出一個IndexError。

remove(值)
刪除第一次出現的值。如果沒有找到,提出一個 ValueError。

reverse()
在原位反轉deque的元素然后返回None。

版本3.2中的新功能。

rotate(n = 1 )
向右旋轉deque n步。如果n為負數,則向左旋轉。

當雙端隊列不為空時,向右d.appendleft(d.pop())旋轉一步相當於,向左旋轉一步相當於d.append(d.popleft())。

Deque對象還提供一個只讀屬性:

maxlen
一個雙端隊列的最大大小或None無邊界。

'''
from collections import deque

var = deque(['shanghai','beijing','shenzhen','guangzhou'])

# 隊列遵從先進先出的原則,在設定maxlen 的情況下,后進去的會將先進去的擠出去
de = deque(maxlen=4)
print(de.maxlen) #4

de.append("Tom")
de.append("Sarah")
de.append("Tony")
de.append("Jim")
de.append("Charles")
print(de)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM