🐈
Pythonで双方向キューの使い方
競プロでそれなりに使う機会があるが、毎回使い方を忘れるので使い方を書いておく。
※双方向キューにどのようなメリットがあるかはここでは書きません。
初期化
from collections import deque
d = deque()
# or
d = deque([1, 2, 3])
dに対して色々な操作を行なっていく。
よく使うメソッド
d.append(3) # 右側に挿入する
# [3]
d.append(5)
# [3, 5]
d.appendleft(7) # 左側に挿入する
# [7, 3, 5]
d.pop() # 右側から取り出す
# > 5
# [7, 3]
d.popleft() # 左側から取り出す
# > 7
# [3]
d.popleft() # 右側から入れたやつも左から取り出せる。
# > 3
# []
あまり使わなそうだけど、使い所がありそうなメソッド
調べてたらrotateなるメソッドがあったので試してみた。
d = deque([1, 2, 3, 4, 5])
d.rotate() # 引数なしで呼び出すと、右側に1個ずつ要素をずらす(右から取り出して、その値を左に挿入する感じ)
# [5, 1, 2, 3, 4]
d.rotate(3) # 引数を指定すると、引数分右側に要素をずらす
# [2, 3, 4, 5, 1]
d.rotate(-4) # 負の数を指定すると、左側に要素をずらすこともできる。
# [1, 2, 3, 4, 5]
Discussion