collections模塊 ==> Python標准庫,數據結構常用的模塊;collections包含了一些特殊的容器,針對Python內置的容器,例如list、dict、set和tuple,提供了另一種選擇。
collections.deque():
deque是棧和隊列的一種廣義實現,deque是"double-end queue"的簡稱;deque支持線程安全、有效內存地以近似O(1)的性能在deque的兩端插入和刪除元素,盡管list也支持相似的操作,但是它主要在固定長度操作上的優化,從而在pop(0)和insert(0,v)(會改變數據的位置和大小)上有O(n)的時間復雜度。
常用方法包含如下:
1、append():
從右端添加元素,與list相同
2、appendleft():
從左端添加元素
3、extend():
從右端逐個添加可迭代對象,與list相同,Python中的可迭代對象有:列表、元組、字典、字符串
4、extendleft():
從左端逐個添加可迭代對象,Python中的可迭代對象有:列表、元組、字典、字符串
5、pop():
移除列表中的一個元素(默認最右端的一個元素),並且返回該元素的值(與list同
),如果沒有元素,將會報出IndexError
6.popleft():
移除列表中的一個元素(默認最左端的一個元素),並且返回該元素的值,如果沒有元素,將會報出IndexError
7、count():
統計隊列中的元素個數(與list同
)
8、insert(index,obj):
在指定位置插入元素(與list同)
9、rotate(n):
rotate(n), 從右側反轉n步,如果n為負數,則從左側反轉。
d.rotate(1) 等於 d.appendleft(d.pop())
10、maxlen:
只讀的屬性,deque限定的最大長度,如果無,就返回None。
當限制長度的deque增加超過限制數的項時, 另一邊的項會自動刪除。
11、remove():
移除第一次出現的元素,如果沒有找到,報出ValueError
12、clear()
將deque中的元素全部刪除,最后長度為0