„Python“ eilė: FIFO, LIFO pavyzdys

Kas yra „Python“ eilė?

Eilė yra duomenų talpykla. Pirmiausia įvedami duomenys bus pašalinti pirmiausia, todėl eilė taip pat vadinama „First in First Out“ (FIFO). Eilėje yra du galai priekyje ir gale. Daiktai įvedami iš užpakalio ir išimami iš priekinės pusės.

Šioje „Python“ pamokoje sužinosite:

  • Kas yra „Python“ eilė?
  • Kaip veikia „Python“ eilė?
  • Eilės tipai „Python“
  • „Python“ eilės diegimas
  • Metodai, esantys „Queue“ ir „LifoQueue“ klasėse
  • „First In First Out“ eilės pavyzdys
  • „Last In First Out“ eilės pavyzdys
  • Į eilę įtraukite daugiau nei 1 elementą
  • Rikiuoti eilę
  • Atvirkštinė eilė

Kaip veikia „Python“ eilė?

Eilę galima lengvai palyginti su realiu pavyzdžiu eilėje laukiančių žmonių eilėje prie bilietų kasos, pirmiausia stovintis asmuo gaus bilietą pirmas, paskui kitas asmuo ir pan. Ta pati logika galioja ir eilės duomenų struktūrai.

Čia pateiktas eilės scheminis atvaizdavimas:

Rear“ reiškia vietą, kurioje elementai įterpiami į eilę. Šiame pavyzdyje 7 yra to vertė.

Priekinis reiškia tašką, kai daiktai iš eilės bus pašalintas. Jei pašalinsite elementą iš eilės, pirmasis elementas, kurį gausite, yra 1, kaip parodyta paveikslėlyje.

Pirmasis elementas buvo įtrauktas į eilę, o pašalinant jis išėjo pirmasis. Taigi eilė vadinama PIRMA PIRMAI (FIFO)

Eilėje elementai pašalinami eilės tvarka ir jų negalima pašalinti tarp jų. Jūs tiesiog negalite atsitiktinai pašalinti 5 elemento iš eilės. Norėdami tai padaryti, turėsite pašalinti visus elementus prieš 5 metus. Eilėje esantys elementai bus pašalinti ta tvarka, kuria jie buvo įterpti.

Eilės tipai „Python“

„Python“ yra daugiausia dviejų tipų eilės:

  • „First in First out Queue“ (pirmoji eilėje): tam pirmiausia pasireikš elementas, kuris eina pirmiausia.

    Norėdami dirbti su FIFO, turite iš eilės modulio iškviesti „ Queue ()“ klasę.

  • Paskutinė pirmos eilės eilė: čia bus pirmasis, kuris bus įvestas paskutinis.

    Norėdami dirbti su LIFO, turite iš eilės modulio paskambinti „ LifoQueue ()“ klasei.

„Python“ eilės diegimas

Labai lengva dirbti su eile „python“. Toliau pateikiami veiksmai, kuriuos reikia atlikti norint naudoti eilę kode.

1 žingsnis) Jūs tiesiog turite importuoti eilės modulį, kaip parodyta žemiau:

import queue

Pagal numatytuosius nustatymus modulis yra prieinamas su „Python“, todėl norint pradėti dirbti su eile jums nereikia jokio papildomo diegimo. Yra dviejų tipų eilės: FIFO (first in first out) ir LIFO (last in first out out).

2 žingsnis. Norėdami dirbti su FIFO eilėmis, paskambinkite į eilės klasę naudodami eilės modulį, importuotą, kaip parodyta žemiau:

import queueq1 = queue.Queue()

3 žingsnis. Norėdami dirbti su LIFO eilute, paskambinkite į „LifoQueue“ () klasę, kaip parodyta žemiau:

import queueq1 = queue.LifoQueue()

Metodai, esantys „Queue“ ir „LifoQueue“ klasėse

Toliau pateikiami svarbūs „Queue“ ir „LifoQueue“ klasės metodai:

  • įdėti (elementas): tai įdės elementą į eilę.
  • get (): Tai grąžins jums elementą iš eilės.
  • tuščia (): ji bus teisinga, jei eilė bus tuščia, ir klaidinga, jei yra elementų.
  • qsize (): pateikia eilės dydį.
  • full (): grąžina true, jei eilė pilna, kitaip klaidinga.

„First In First Out“ eilės pavyzdys

„First in first out“ atveju pirmasis pasirodys elementas, kuris eina pirmas.

Pridėti ir įrašyti į eilę

Panagrinėkime pavyzdį, kaip pridėti elementą eilėje. Norėdami pradėti dirbti su eile, pirmiausia importuokite modulio eilę, kaip parodyta toliau pateiktame pavyzdyje.

Norėdami pridėti elementą, galite naudoti put () metodą, kaip parodyta pavyzdyje:

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

Pagal numatytuosius nustatymus eilės dydis yra begalinis ir prie jos galite pridėti bet kokį elementų skaičių. Jei norite apibrėžti eilės dydį, tą patį galite padaryti taip

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.

Išvestis:

True

Dabar eilės dydis yra 5, o tam reikės ne daugiau kaip 5 elementų, o metodas q1.full () grįš į true. Pridėjus daugiau elementų, kodas toliau nebus vykdomas.

Pašalinkite elementą iš eilės

Norėdami pašalinti elementą iš eilės, galite naudoti metodą, vadinamą get (). Šis metodas leidžia eilės elementus iškviesti.

Šiame pavyzdyje parodyta, kaip pašalinti elementą iš eilės.

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

Išvestis:

The item removed from the queue is 10

„Last In First Out“ eilės pavyzdys

Paskutinės eilės atveju elementas, kuris įvedamas paskutinis, bus pirmasis.

Norėdami dirbti su LIFO, t. Y. Paskutiniame pirmoje eilėje, turime importuoti eilės modulį ir naudoti „LifoQueue ()“ metodą.

Pridėti ir įrašyti į eilę

Čia mes suprasime, kaip pridėti elementą prie LIFO eilės.

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

„LifoQueue“ turite naudoti put () metodą, kaip parodyta aukščiau pateiktame pavyzdyje.

Pašalinkite elementą iš eilės

Norėdami pašalinti elementą iš LIFOqueue, galite naudoti get () metodą.

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

Išvestis:

The item removed from the LIFO queue is 10

Į eilę įtraukite daugiau nei 1 elementą

Ankstesniuose pavyzdžiuose matėme, kaip pridėti vieną elementą ir pašalinti elementą FIFO ir LIFOqueue. Dabar pamatysime, kaip pridėti daugiau nei vieną elementą ir jį pašalinti.

Pridėti ir elementą „FIFOqueue“

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

Pašalinkite elementą iš „FIFOqueue“

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.

Išvestis:

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

Pridėti ir elementą LIFOqueue

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

Pašalinkite elementą iš LIFOqueue

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. 

Išvestis:

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

Rikiuoti eilę

Šiame pavyzdyje rodomas eilių rūšiavimas. Rūšiavimui naudojamas algoritmas yra burbulų rūšiavimas.

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()

Išvestis:

3 4 5 10 11 21

Atvirkštinė eilė

Norėdami pakeisti eilę, galite naudoti kitą eilę ir rekursiją.

Šis pavyzdys rodo, kaip pakeisti eilę.

Pavyzdys:

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()

Išvestis:

10 3 21 4 5 11

Santrauka:

  • Eilė yra duomenų talpykla. Yra dvi eilės rūšys: FIFO ir LIFO.
  • Jei FIFO („First in First out Queue“), pirmiausia pasirodys elementas.
  • LIFO („Last in First out Queue“) elementas, kuris bus įvestas paskutinis, bus pirmasis.
  • Eilėje esantis elementas pridedamas naudojant put (item) metodą.
  • Norėdami pašalinti elementą, naudojamas get () metodas.

Įdomios straipsniai...