Pythonの双方向キュー(deque)

3006 ワード

タスクの説明
このタスク:振動キューを出力できるプログラムを作成します.
双方向キュー(deque)
双方向キューは、キューの両端でエンキュー・デキュー操作が可能なデータ構造であり、通常のキューよりも柔軟で複雑です.
双方向キューの作成
カウンタCounterのように、双方向キューは、無パラメトリックコンストラクション関数を呼び出して空のキューを作成するか、反復可能オブジェクトを使用してキューを作成して初期化することができます.たとえば、次のようになります.
  • d = collections.deque() #
  • d = collections.deque(['a','b','c']) # list
  • d = collections.deque(('a','b','c')) # tuple
  • d = collections.deque({'a':0,'b':1,'c':2}) # dict
  • d = collections.deque("abc") #

  • 1行目の文は空のキューを作成し、次の4行の文は要素abcを含むキューを作成します.dictから作成する場合は、そのキーkeyを使用します.値valueではありません.
    キューアクション
    双方向キューは、listと同様に、appendpopの2つのメンバー関数があります.これらの関数は、キューの右側に要素を追加し、キューの右側から要素を削除して返します.たとえば、次のようになります.
  • d.append('d') # 'd'
  • print(d)
  • d.pop() #
  • print(d)

  • 得られた結果:deque(['a', 'b', 'c', 'd'])deque(['a', 'b', 'c'])appendpopに対応して、キューの左側を操作する関数のセットがあります.appendleftpopleft、使い方も前のグループと似ています.
  • d.appendleft('+') # 'd'
  • print(d)
  • d.popleft() #
  • print(d)

  • 得られた結果:deque(['+', 'a', 'b', 'c'])deque(['a', 'b', 'c'])双方向キューには、反復可能なオブジェクトのすべての反復値をキューの右または左に順次追加するための、extendおよびextendleftのペアも用意されています.
  • d1 = collections.deque()
  • d1.extend("123")
  • print(d1)
  •  
  • d1 = collections.deque()
  • d1.extendleft("123")
  • print(d1)

  • 得られた結果は、deque(['1', '2', '3'])deque(['3', '2', '1'])上下の2つの結果の値の順序が逆であることに気づく.
    プログラミング要件
    ヒントによると、右側のエディタコードを補完して関数機能を完了し、関数は入力された数字n(n≥0)を読み出し、n要素を出力します.要素は0からn-1の「振動」の列まで、「振動」の定義はテストの説明を参照してください.
    テストの説明
    入力:3の場合、出力される「振動」列は:deque([1, 0, 2])入力:5の場合、出力される「振動」列は:deque([3, 1, 0, 2, 4])
    import collections
    def Func():
        #           
        n = int(input())
        if (n>=0):
            d = collections.deque()
            for i in range(n):
                if(i%2!=0):
                       d.appendleft(i)
                else:
                       d.append(i)
            print(d)