スタック:データが(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の外に文字通りです。キューモジュール内のコンテナの順序は、消費者に複数の同時生産者を支援するためのロックステートメントを提供します。以下のモジュールのクラスの多くの例は、典型的には、スレッド間の通信に使用されます。