[module] deque (queue+stack)


deque

  • from collections import defaultdict、defaultdictを使用したことがある.
  • それのようにDequeもコレクションから持ってくる.
  • listのqueue、stckは使えますか?
  • Deckはスタックとキューを一般化しています(名前は「deck」で、「double-dendqueue」の略です).Darkは、スレッドが安全でメモリが効率的なDarkの両端に(append)とポップアップ(pop)を追加することをサポートし、両者の性能はほぼ同じです.
    出典:https://docs.python.org/ko/3.9/library/collections.html
  • つまり、リストをキューまたはスタックとして使用しようとするappend(x)insert(0,xO(N)O(N)O(N)である.
  • 使用
  • デックはO(1)O(1)O(1)に等しい.
  • dequeの作成

  • deque生成
  • from collections import deque
    
    if __name__ == '__main__':
        dq=deque()
    
  • 既存list->deque
  • from collections import deque
    
    if __name__ == '__main__':
        build=[3,2,1,3,4]
        
        dq=deque( build ) <- 기존 list'build'를 deque로 만듦
    

    に近づく


    print(dq[1])

    dq=deque()
    dq.append(1)
    dq.append(2)
    print(dq[1]) # 2
  • リストのようにidxにアクセスできる.
  • count(x):x要素カウント

    dq.count(3)

    index(x[,s,e])


    index(x[, start[, stop]])
    データ・ウェアハウス内のxの場所(インデックスの開始または終了、およびインデックスの停止前)を返します.最初の一致が返されるか見つからない場合は、ValueErrorが生成されます.

    deque append


    append(x)


    append(x)
    Deckの右側にxを追加します.

    appendleft(x)


    appendleft(x)
    Deckの左側にxを追加します.
    insert(i, x)
    xをdackのi位置に挿入します.
    挿入により有限長のデータ損失がmaxlenより大きい場合、IndexErrorが発生する.

    deque pop


    pop() / popleft()



    clear()


    Darkからすべての要素を削除し、長さを0にします.
    copy()
    Deckの浅いコピーを作成します.
    バージョン3.5に追加します.
    count(x)
    xと同様に、大きな要素の数を計算します.
    バージョン3.2に追加します.
    extend(iterable)
    iterableパラメータから要素を追加し、Deckの右側を展開します.
    extendleft(iterable)
    iterableからの要素を追加してDeckの左側を展開します.左側の一連の追加により、iterableパラメータの要素の順序が逆転します.

    削除


    remove(val)


    その他


    reverse()


    rotate()

  • dq.rotate(n=1)右に曲がってDeque n回.
    nが負の場合、左に回転します.
  • count(val)


    extend(iter)

  • dq.extend(iterable)
  • iterableパラメータからの要素を追加し、Deckの右側を展開します.
  • extendleft(iter)


    バージョン3.5に追加します.
    バージョン3.5に追加します.
    pop()
    Deckの右側から要素を削除して返します.元素がなければIndexErrorを励起する.
    popleft()
    Deckの左側から要素を削除して返します.元素がなければIndexErrorを励起する.
    remove(value)
    valueの最初のエントリを削除します.見つからない場合は、ValueErrorがトリガーされます.
    reverse()
    Deckの要素をその位置で反転させ、Noneに戻ります.
    バージョン3.2に追加します.
    rotate(n=1)
    データウェアハウスをステップnの右側に回転します.n負数の場合は左に回転します.
    dakeが空でない場合、右に1ステップ回転するとd.appendleft(d.pop()に等しく、左に1ステップ回転するとd.appendleft(d.popleft()に等しい.
    Deckオブジェクトは、読み取り専用の調査レポートも提供します.
    maxlen
    最大サイズまたは制限がない場合はNoneです.
    バージョン3.1に追加します.

    dequeとしてスタックを使用する

  • 条件で萌芽流行
  • スタックタイプ

  • FA(Full Ascend)
  • SP:有効値
  • プッシュごとにSPが増加
  • FD(Full Descend)
  • SP:有効値
  • プッシュSPあたり減少
  • ED(Empty Ascend)
  • SP:有効値+1ポインタ
  • プッシュごとにSPが増加
  • ED(Empty Descend)
  • SP:有効値-1ポインタ
  • プッシュSPあたり減少