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()関数を使用すると、例外が発生します。
-
JavaScriptクロージャとは何ですか?例を挙げて説明します。
JavaScriptのクロージャを使用すると、外部関数が実行されて返された後でも、内部関数から外部関数スコープにアクセスできます。これは、内部関数が常に外部関数変数にアクセスできることを意味します。 以下はJavaScriptのクロージャのコードです- 例 <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=devic
-
Pythonの__init__。pyとは何ですか?
__init __。pyファイルは、Pythonがディレクトリをパッケージを含むものとして扱うようにするために必要です。これは、文字列などの一般的な名前のディレクトリが、後でモジュール検索パスで発生する有効なモジュールを意図せずに非表示にするのを防ぐために行われます。最も単純なケースでは、__ init __。pyは空のファイルにすることができますが、パッケージの初期化コードを実行したり、__all__変数を設定したりすることもできます。 __init __。pyファイルの例: from math import sin from my_package import my_func 上記の