Python várólista: FIFO, LIFO példa

Tartalomjegyzék:

Anonim

Mi az a Python Queue?

A sor egy olyan tároló, amely adatokat tárol. Az elsőként beírt adatokat először eltávolítjuk, ezért a várólistát "First in First Out" (FIFO) néven is nevezik. A sornak két vége van elöl és hátul. Az elemeket hátulról adják meg, és az elülső oldalról távolítják el.

Ebben a Python oktatóanyagban megtudhatja:

  • Mi az a Python Queue?
  • Hogyan működik a Python Queue?
  • Sor típusai a Pythonban
  • Python várólista telepítése
  • A Queue és a LifoQueue osztályon belül elérhető módszerek
  • First In First Out Queue példa
  • Példa a Last In First Out várólistára
  • Vegyen fel egynél több elemet a várólistába
  • Válogatási sor
  • Fordított várólista

Hogyan működik a Python Queue?

A várakozási sor könnyen összehasonlítható a valós példával, a sorban várakozók sorával a jegypultnál, aki először áll, az kapja meg először a jegyet, utána következik a következõ és így tovább. Ugyanez a logika érvényes a sor adatstruktúrájára is.

Itt látható a sor vázlatos ábrázolása:

A hátsó azt a pontot jelöli, ahová az elemeket beillesztik a sorba. Ebben a példában a 7 ennek az értéke.

Az előlap azt a pontot jelöli, ahol a sorból származó elemeket eltávolítják. Ha eltávolít egy elemet a sorból, akkor az első elem 1 lesz, amint az az ábrán látható.

Az 1. tétel került be elsőként a sorba, és eltávolításakor az első kijön. Ezért a sort FIRST IN FIRST OUT-nak (FIFO) hívják

Egy sorban az elemeket sorrendben távolítják el, és nem távolíthatók el közöttük. Csak nem lehet véletlenszerűen eltávolítani az 5. elemet a sorból, ehhez az összes elemet el kell távolítania 5 előtt. A sorban lévő elemeket a beszúrás sorrendjében távolítjuk el.

Sor típusai a Pythonban

A Pythonban elsősorban kétféle sor áll rendelkezésre:

  • Első a First out Queue-ban: Ehhez először az az elem kerül ki, amelyik először megy.

    A FIFO-val való együttműködéshez meg kell hívnia a Queue () osztályt a queue modulból.

  • Last in First out Queue: Itt van, az utoljára beírt elem lesz az első, aki kijön.

    A LIFO használatához meg kell hívnia a LifoQueue () osztályt a várólista modulból.

Python várólista telepítése

Nagyon egyszerű dolgozni a várólistával a pythonban. Az alábbi lépéseket kell követnie a sor használatához a kódban.

1. lépés: Csak importálnia kell a várólista modult, az alábbiak szerint:

import queue

A modul alapértelmezés szerint python használatával érhető el, és nem kell további telepítés szükséges a várólistával való munka megkezdéséhez. Kétféle sor áll rendelkezésre: FIFO (first in first out) és LIFO (last in first out).

2. lépés: A FIFO várólistával való együttműködéshez hívja be a Sor osztályt az alább látható módon importált sor modul segítségével:

import queueq1 = queue.Queue()

3. lépés: A LIFO várólistával való együttműködéshez hívja a LifoQueue () osztályt az alábbiak szerint:

import queueq1 = queue.LifoQueue()

A Queue és a LifoQueue osztályon belül elérhető módszerek

Az alábbiakban bemutatjuk a Queue és a LifoQueue osztályon belül elérhető fontos módszereket:

  • put (item): Ezzel az elem kerül a sorba.
  • get (): Ez egy elemet ad vissza a sorból.
  • Üres (): igaz lesz, ha a sor üres, és hamis, ha elemek vannak.
  • qsize (): a sor méretét adja vissza.
  • full (): true-t ad vissza, ha a sor tele van, különben hamis.

First In First Out Queue példa

Az első az elsőben kimenet esetén az az elem, amelyik előbb megy, elsőként fog kijönni.

Hozzáadás és elem hozzáadása a várólistához

Dolgozzunk egy példán, hogy felvegyünk egy elemet a sorba. A várólistával való munka megkezdéséhez először importálja a modul várólistáját, az alábbi példában látható módon.

Elem hozzáadásához használhatja a put () metódust a példában látható módon:

import queueq1 = queue.Queue()q1.put(10) #this will additem 10 to the queue.

Alapértelmezés szerint a sor mérete végtelen, és tetszőleges számú elemet adhat hozzá. Abban az esetben, ha meg akarja határozni a sor méretét, ugyanezt megteheti az alábbiak szerint

import queueq1 = queue.Queue(5) #The max size is 5.q1.put(1)q1.put(2)q1.put(3)q1.put(4)q1.put(5)print(q1.full()) # will return true.

Kimenet:

True

Most a sor mérete 5, és nem fog több, mint 5 elem, és a q1.full () metódus true értékre tér vissza. További elemek hozzáadása nem hajtja végre a kódot tovább.

Távolítson el egy elemet a sorból

Elem eltávolításához a sorból használhatja a get () nevű módszert. Ez a módszer lehetővé teszi a sorból származó elemeket, amikor hívják őket.

A következő példa bemutatja, hogyan lehet eltávolítani egy elemet a sorból.

import queueq1 = queue.Queue()q1.put(10)item1 = q1.get()print('The item removed from the queue is ', item1)

Kimenet:

The item removed from the queue is 10

Példa a Last In First Out várólistára

Az utoljára az első kimenő sorban az utoljára beírt elem fog elsőként kijönni.

A LIFO-val való együttműködéshez, azaz utolsónak az első kimeneti sorban kell importálnunk a sorrend modult, és ki kell használnunk a LifoQueue () metódust.

Hozzáadás és elem hozzáadása a várólistához

Itt megértjük, hogyan adhatunk hozzá egy elemet a LIFO sorához.

import queueq1 = queue.LifoQueue()q1.put(10)

A put () metódust kell használnia a LifoQueue-on, a fenti példában látható módon.

Távolítson el egy elemet a sorból

Elem eltávolításához a LIFOqueue-ból használhatja a get () metódust.

import queueq1 = queue.LifoQueue()q1.put(10)item1 = q1.get()print('The item removed from the LIFO queue is ', item1)

Kimenet:

The item removed from the LIFO queue is 10

Vegyen fel egynél több elemet a várólistába

A fenti példákban láthattuk, hogyan lehet egyetlen elemet hozzáadni és eltávolítani az elemet a FIFO és a LIFOqueue számára. Most meglátjuk, hogyan lehet egynél több elemet felvenni és eltávolítani.

Hozzáadás és elem hozzáadása a FIFOqueue-hoz

import queueq1 = queue.Queue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue

Távolítson el egy elemet a FIFOqueue-ból

import queueq1 = queue.Queue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queuewhile not q1.empty():print("The value is ", q1.get()) # get() will remove the item from the queue.

Kimenet:

The value is 0The value is 1The value is 2The value is 3The value is 4The value is 5The value is 6The value is 7The value is 8The value is 9The value is 10The value is 11The value is 12The value is 13The value is 14The value is 15The value is 16The value is 17The value is 18The value is 19

Hozzáadás és elem hozzáadása a LIFOqueue-hoz

import queueq1 = queue.LifoQueue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue

Távolítson el egy elemet a LIFOqueue-ból

import queueq1 = queue.LifoQueue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queuewhile not q1.empty():print("The value is ", q1.get()) # get() will remove the item from the queue. 

Kimenet:

The value is 19The value is 18The value is 17The value is 16The value is 15The value is 14The value is 13The value is 12The value is 11The value is 10The value is 9The value is 8The value is 7The value is 6The value is 5The value is 4The value is 3The value is 2The value is 1The value is 0

Válogatási sor

Az alábbi példa bemutatja a sorok rendezését. A rendezéshez használt algoritmus a buborékok rendezése.

import queueq1 = queue.Queue()#Addingitems to the queueq1.put(11)q1.put(5)q1.put(4)q1.put(21)q1.put(3)q1.put(10)#using bubble sort on the queuen = q1.qsize()for i in range(n):x = q1.get() # the element is removedfor j in range(n-1):y = q1.get() # the element is removedif x> y :q1.put(y) #the smaller one is put at the start of the queueelse:q1.put(x) # the smaller one is put at the start of the queuex = y # the greater one is replaced with x and compared again with nextelementq1.put(x)while (q1.empty() == False):print(q1.queue[0], end = " ")q1.get()

Kimenet:

3 4 5 10 11 21

Fordított várólista

A sor megfordításához használhat másik sort és rekurziót.

A következő példa bemutatja, hogyan lehet a sort megfordítani.

Példa:

import queueq1 = queue.Queue()q1.put(11)q1.put(5)q1.put(4)q1.put(21)q1.put(3)q1.put(10)def reverseQueue (q1src, q2dest) :buffer = q1src.get()if (q1src.empty() == False) :reverseQueue(q1src, q2dest) #using recursionq2dest.put(buffer)return q2destq2dest = queue.Queue()qReversed = reverseQueue(q1,q2dest)while (qReversed.empty() == False):print(qReversed.queue[0], end = " ")qReversed.get()

Kimenet:

10 3 21 4 5 11

Összegzés:

  • A sor egy olyan tároló, amely adatokat tárol. Kétféle várólista létezik, a FIFO és a LIFO.
  • A FIFO (First in First out Queue) esetében az elsőként megjelenő elem fog elsőként kijönni.
  • A LIFO (Last in First out Queue) esetén az utoljára beírt elem lesz az első, aki kijön.
  • A sorban lévő elemeket a put (item) módszerrel adjuk hozzá.
  • Elem eltávolításához a get () metódust kell használni.