🐈

Pythonで双方向キューの使い方

2023/02/16に公開

競プロでそれなりに使う機会があるが、毎回使い方を忘れるので使い方を書いておく。
※双方向キューにどのようなメリットがあるかはここでは書きません。

初期化

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