Python數據類型:雙端隊列deque-比列表list性能更高的一種數據類型
阿新 • • 發佈:2018-07-22
mov 有趣 公眾 ons 數據類型 時間復雜度 可選參數 重要 增加 Python數據類型:雙端隊列
說到容器類型,大家第一時間想到的多半是list,而list確實也能解決大部分的需要,但碰到列表內的數據量相當大的時候,性能問題就顯得尤為重要;再或者列表被惡意註入一個無窮大的數據量時,就可能會暴露出安全問題來。較好的替代方法是:collections.deque。獲得性能或安全的同時,犧牲的是數據大小。
deque隊列兩端取出或者刪除時間復雜度都是O(1),而列表都是O(n),隊列的性能比列表更好
簡介
歡迎關註我的公眾號:Python雁橫
collections.deque對象(雙端隊列),支持從任意一端增加刪除元素。deque是線程安全的,內存高效的隊列,它被設計為從兩端追加和彈出都非常快。
創建deque對象
deque() 用於創建一個deque對象
可選參數:
- iterable 一個可叠代對象,如列表,元組
- maxlen 最大長度,超出最大長度,會將之前的元素擠出去
示例:
from collections import deque
dq = deque([1,2,3,4]],maxlen=10)
deque對象的方法
dq.append(x) 在右端添加x
>>>dq.append(5)
>>>print(dq)
deque([1, 2, 3,4,5])
dq.appendleft(x) 在左端添加x
>>>dq.appendleft(0) >>>print(dq) deque([0,1,2,3,4,5])
dq.pop() 在右端彈出元素,若隊列無元素,會報錯
>>>dq.pop()
5
dq.popleft() 在左端彈出元素,若隊列無元素,會報錯
>>>dq.popleft()
0
dq.extend(iterable) 和列表的extend類似,在右側擴展隊列,參數是一個可叠代對象
>>>dq.extend([5,6,7,8])
dq.extendleft(iterable) 同理
>>>dq.extendleft([5,6,7,8])
dq.remove(value) 移除第一個找到的value,若未找到,會導致IndexError
dq.remove(3)
dq.clear() 清空隊列
dq.clear()
rotate(n) 如果n>0,所有元素向右移動n個,否則向左
dq.rotate(5)
如果你學到什麽,記得給我點個贊哦,也可以關註我的公眾號(Python雁橫)獲取更多有趣的教程
Python數據類型:雙端隊列deque-比列表list性能更高的一種數據類型