02.キュー


キュー


データ構造
1番目の1番目の出力(FIFO)、1番目の1番目の出力(LILO)の方式はスタックの順序とは逆である.

Enqueueはキューにデータを入れる機能で、Dequeueはキューからデータを取り出す機能です.

PythonとQ


Queueライブラリには、Queue()、LifoQueue()、PriorityQueue()など、さまざまなキュー構造があります.

Queue()


通常のキューの機能をサポートします.
import queue

data = queue.Queue()
data.put(5)
data.put(3)
#Enqueue 입력값으로 원하는 자료형/데이터를 입력할 수 있다.

data.get() 
#Dequeue 꺼내는 값이 정해져있으므로 입력값이 없다. 꺼낸 값을 반환한다.

data.qsize() 
#queue의 사이즈를 반환한다.

LifoQueue()


変形キューを使用してLIFOポリシーに従います.後で入ってきた人が先に出てきます.
import queue

data = queue.LifoQueue()
data.put(5)
data.put(3)
#Enqueue 입력값으로 원하는 자료형/데이터를 입력할 수 있다.

data.get() 
#Dequeue 꺼내는 값이 정해져있으므로(나중에 넣은 값) 입력값이 없다. 꺼낸 값을 반환한다.

data.qsize() 
#queue의 사이즈를 반환한다.

PriorityQueue()


優先度を指定し、優先度の高い順に出力します.△2位は1位以降よりも数字の低い優先順位が高い.
import queue

data = queue.PriorityQueue()
data.put((5, "Korea"))
data.put((3, 4))
#Enqueue 입력값으로 (우선순위, 데이터)로 이루어진 튜플을 받는다.

data.get() 
#Dequeue 꺼내는 값이 정해져있으므로(우선 순위가 높은 값) 입력값이 없다. 꺼낸 값을 반환한다.

data.qsize() 
#queue의 사이즈를 반환한다.

DequeとQ


PythonのCollectionsライブラリのdequeを使用すると、キューが容易に実現されます.
from collections import deque

queue = deque()

deque.append(data)
deque.appendleft(data)
deque.pop()
deque.popleft()
主に上記の4つの方法を用いてキューを実現し,len(queue)を用いてサイズも知ることができる.
appendとpopはインデックス値の大きい側にデータを追加、削除します.
appendleftおよびpopleftは、インデックス値の小さい側でデータを追加および削除します.