Pythonの双方向キュー(deque)
3006 ワード
タスクの説明
このタスク:振動キューを出力できるプログラムを作成します.
双方向キュー(deque)
双方向キューは、キューの両端でエンキュー・デキュー操作が可能なデータ構造であり、通常のキューよりも柔軟で複雑です.
双方向キューの作成
カウンタ
1行目の文は空のキューを作成し、次の4行の文は要素
キューアクション
双方向キューは、
得られた結果:
得られた結果:
得られた結果は、
プログラミング要件
ヒントによると、右側のエディタコードを補完して関数機能を完了し、関数は入力された数字
テストの説明
入力:
このタスク:振動キューを出力できるプログラムを作成します.
双方向キュー(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行の文は要素
a
、b
、c
を含むキューを作成します.dict
から作成する場合は、そのキーkey
を使用します.値value
ではありません.キューアクション
双方向キューは、
list
と同様に、append
とpop
の2つのメンバー関数があります.これらの関数は、キューの右側に要素を追加し、キューの右側から要素を削除して返します.たとえば、次のようになります.d.append('d') # 'd'
print(d)
d.pop() #
print(d)
得られた結果:
deque(['a', 'b', 'c', 'd'])
deque(['a', 'b', 'c'])
append
、pop
に対応して、キューの左側を操作する関数のセットがあります.appendleft
、popleft
、使い方も前のグループと似ています.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)