Pythonのアナログ記録スタック操作キュー(続きます)

スタック:データが(LIFO)最初のうちで最初のうちの最後の最後であります

キュー:データFIFO(FIFO)先入れ先出しで

 

最初のリスト:(あるいずれかのアナログスタックをシミュレートすることができますキュー)貧しい人々に良いです。

コンテナは、配列表ですが、また、シミュレートされたスタック操作では、速度比較が可能です。

ときにシミュレーションスタック操作、ポップ追加する必要があります。(スタックシミュレーション時間、優れた性能)

IN [228]:LL =リスト()                                                                    

の[229]:ll.append( 'タスク1')                                                             

において、[230]:ll.append( 'タスク2')                                                             

において、[231]:ll.append(「タスク3 ')                                                             

において、[232]:ll.pop(0)                                                                      
OUT [232]:'タスク1 ' 

では[233]:ll.pop(0)                                                                      
OUT [233]:'タスク2」

において、[234]:ll.pop (0)                                                                      
OUT [234]: 'タスク3'

 あなたが最初の要素のうちあるたびに、後者の要素のインデックスが変更されるため、このようなシミュレーション動作キューは非常に非効率的です

プロフェッショナル時に必要な引数は、O(n)があります

 

第二は、こと、collections.dequeでシミュレートスタックは、キューに優れているコンテナシーケンス。

オブジェクトのランダムアクセス中間要素のパフォーマンスの低下に加えて、時間のかかるO(N)とが、容器の操作のシーケンスの半分は、中間要素に少数のアクセスを取ります。

アナログスタック操作:

で[235]:コレクションから両端キューインポート                                                  

Q =両端キュー:で[236]?                                                                    
INIT署名:両端キュー(自己、/、*引数、** kwargsから)
ドキュメンテーション文字列:      
両端キュー([MAXLEN]、[反復可能]) - >両端キューオブジェクト

Aのリストのようなデータのために最適化された配列は、そのエンドポイントの近くにアクセスします。
ファイル:/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/collections/__init__.py 
タイプ:タイプ
サブクラス:      

で[237]:Q =両端キュー( )                                                                    

で[238]:q.append( '任务1')                                                             

q.append( 'タスク2'):[239]内                                                              

で[240]:q.append( 'タスク3')                                                              

での[241]:q.pop()                                                                        
OUT [241]: 'タスク3' 

における[242 ]:q.pop()                                                                        
OUT [242]: 'タスク2' 

において、[243]:q.pop()                                                                        
OUT [243]: 'タスク1' 

では[244]:Q                                                                              
OUT [244]:両端キュー([] )

 アナログキュー操作:

q.append( 'タスク1'):[246]内                                                              

で[247]:q.append( 'タスク2')                                                              

には、[248]:q.append( 'タスク3')                                                              

における[249]:Q                                                                              
OUT [ 249]:両端キュー([ 'タスク1'、 'タスク2'、 'タスク3'])

で[250]:q.popleft()                                                                    
OUT [250]: 'タスク1' 

の[251]:q.popleft( )                                                                    
OUT [251]: 'タスク2' 

において、[252]:Q.                                                                   popleft() 
OUT [252]: 'タスク3'

 

すなわち、以下に説明する単一のアナログ・スタックまたはキューであり、二つの上記スタックをシミュレートすることができ、コンテナ配列キューをシミュレートすることができています。

queue.LifoQueueは、シミュレーションから見ることができ、スタック、LIFOの外に文字通りです。キューモジュール内のコンテナの順序は、消費者に複数の同時生産者を支援するためのロックステートメントを提供します。以下のモジュールのクラスの多くの例は、典型的には、スレッド間の通信に使用されます。

おすすめ

転載: www.cnblogs.com/sidianok/p/12071123.html