てぃぐれのプログラマwiki

ワクワクに従う

Deque(デック) Double-Ended queue 双方向キュー

Deque

双方向キュー

 メリット

  indexが貼られていないので、要素削除後に生じるindexの張替えがいらないので、先頭や最後への追加・削除が速い。

 

 デメリット

  indexがない分、探索が遅い。そのため先頭、最後以外に対しての処理が遅くなる。

 

f:id:tigretic:20220310172616p:plain



処理の速さ・遅さ

10000個の要素がある配列で処理速度を確認してみる

削除に関しては24倍違う。探索1.5倍違う(iterateでは大差はでないかも)

Deque 削除 O(1) 

List削除 O(n)

 

from collections import deque
import time
d = deque()
# d = []
[d.append(i) for i in range(10000)]

stratTime = time.time() #プログラムの開始時刻
#処理
for i in range(10000):
d[i]
# d.popleft()
# del d[0]

endTime = time.time() #プログラムの終了時刻
runTime = endTime - stratTime #処理時間

print(runTime)

#Deque(削除)0.0014331340789794922//(探索)0.0013191699981689453
#List(削除)0.03389477729797363//(探索)0.000823974609375