Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのキューとは何ですか?例を挙げて説明する


キューは、先入れ先出しで機能する線形データ構造です。 メカニズム(FIFO)。

キューの最初に入る要素が最初に処理されます。

キューのデータ構造は、バススタンドのキューを利用して理解できます。バス停で最初に到着した人が列の最初の人であり、他の人がバス停に到着したときに彼を立たせます。バスが到着すると、バス停に最初に到着した人が最初にバスに乗り込み、残りはバス停に到着した順に乗車します。したがって、FIRST INFIRSTOUTメカニズムに従います。

Pythonでのキューの実装

Pythonのキューは、Pythonライブラリの他の線形データ構造または組み込みモジュールを使用してさまざまな方法で実装できます。

方法1-リストを使用して実装

Pythonのキューは、listを使用して実装できます。リストの先頭に要素を挿入または削除するにはO(n)時間がかかり、他の方法を使用した実装に比べて時間がかかるため、あまり効率的ではありません。

関連する操作

append() −この関数は、キューの最後に要素を追加します。

pop(0) −この関数は、キューの最初の要素を削除して返します。

queue=[]
queue.append(1)
queue.append(2)
queue.append(3)
print("Initial queue",queue)
print("Element popped from the queue")
print(queue.pop(0))
print(queue.pop(0))
print("Queue after popping some elements",queue)

出力

Initial queue [1, 2, 3]
Element popped from the queue
1
2
Queue after popping some elements [3]

キューが空になると、それ以上要素を削除することはできません。これを行うと、例外が発生します。

queue.pop(0)
IndexError: pop from empty list

方法2-queue.Queueを使用して実装

これは、Pythonの組み込みモジュールを使用してキューを実装する方法です。キューからキューをインポートする必要があります。特定のサイズでキューを初期化できます。サイズがゼロの場合、キューは無限になります。

関連する操作

最大サイズ −キューで許可される要素の最大数

get() −キューから最初の要素を削除して返します。キューが空の場合は、キューに少なくとも1つの要素が含まれるまで待ちます。

get_nowait() −キューから最初の要素を削除して返します。キューが空の場合は、例外を発生させます。

put(item) −キューの最後に要素を追加します。キューがいっぱいの場合は、空きスロットが利用可能になるまで待ちます。

put_nowait(item) −キューの最後に要素を追加します。キューがいっぱいの場合は、例外を発生させます。

full() −キューがいっぱいの場合はtrueを返し、そうでない場合はfalseを返します。

empty() −キューが空の場合はTrueを返し、それ以外の場合はfalseを返します

qsize() −キューに存在する要素の数を返します

from queue import Queue
q=Queue(maxsize=3)
q.put(1)
q.put(2)
q.put(3)
print("Is queue full",q.full())
print("Element popped from the queue")
print(q.get())
print(q.get())
print("Number of elements in queue",q.qsize())
print("Is queue empty",q.empty())

出力

Is queue full True
Element popped from the queue
1
2
Number of elements in queue 1
Is queue empty False

方法3-collections.dequeを使用して実装

これは、Pythonでキューを実装するもう1つの方法です。コレクションモジュールからdequeをインポートする必要があります。

関連する操作

append() −この関数は、キューの最後に要素を追加します。

popleft() −この関数は、O(1)時間計算量でキューの最初の要素を削除して返します。

from collections import deque
queue=deque()
queue.append(1)
queue.append(2)
queue.append(3)
print("Intial queue: ",queue)
print("Element popped from the queue")
print(queue.popleft())
print(queue.popleft())
print("Queue after popping some elements: ",queue)

出力

Intial queue: deque([1, 2, 3])
Element popped from the queue
1
2
Queue after popping some elements: deque([3])

空の両端キューでpopleft()関数を使用すると、例外が発生します。


  1. JavaScriptクロージャとは何ですか?例を挙げて説明します。

    JavaScriptのクロージャを使用すると、外部関数が実行されて返された後でも、内部関数から外部関数スコープにアクセスできます。これは、内部関数が常に外部関数変数にアクセスできることを意味します。 以下はJavaScriptのクロージャのコードです- 例 <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=devic

  2. Pythonの__init__。pyとは何ですか?

    __init __。pyファイルは、Pythonがディレクトリをパッケージを含むものとして扱うようにするために必要です。これは、文字列などの一般的な名前のディレクトリが、後でモジュール検索パスで発生する有効なモジュールを意図せずに非表示にするのを防ぐために行われます。最も単純なケースでは、__ init __。pyは空のファイルにすることができますが、パッケージの初期化コードを実行したり、__​​all__変数を設定したりすることもできます。 __init __。pyファイルの例: from math import sin from my_package import my_func 上記の