1. 程式人生 > >Python數據類型:雙端隊列deque-比列表list性能更高的一種數據類型

Python數據類型:雙端隊列deque-比列表list性能更高的一種數據類型

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性能更高的一種數據類型