Ουρά Python: Παράδειγμα FIFO, LIFO

Πίνακας περιεχομένων:

Anonim

Τι είναι η ουρά Python;

Η ουρά είναι ένα κοντέινερ που κρατά δεδομένα. Τα δεδομένα που εισάγονται πρώτα θα αφαιρεθούν πρώτα, και ως εκ τούτου μια ουρά ονομάζεται επίσης "First in First Out" (FIFO). Η ουρά έχει δύο άκρα μπροστά και πίσω. Τα αντικείμενα εισάγονται από το πίσω μέρος και αφαιρούνται από την μπροστινή πλευρά.

Σε αυτό το σεμινάριο Python, θα μάθετε:

  • Τι είναι η ουρά Python;
  • Πώς λειτουργεί το Python Queue;
  • Τύποι ουρών στην Python
  • Εγκατάσταση ουράς Python
  • Μέθοδοι διαθέσιμες στην κατηγορία Queue και LifoQueue
  • Παράδειγμα Ουράς στην πρώτη έξοδο
  • Παράδειγμα ουράς Last In First Out
  • Προσθέστε περισσότερα από 1 στοιχεία στην ουρά
  • Ταξινόμηση ουράς
  • Αντιστροφή ουράς

Πώς λειτουργεί το Python Queue;

Η ουρά μπορεί εύκολα να συγκριθεί με το πραγματικό παράδειγμα της γραμμής των ατόμων που περιμένουν σε μια ουρά στο μετρητή εισιτηρίων, το άτομο που στέκεται πρώτο θα πάρει το εισιτήριο πρώτα, ακολουθούμενο από το επόμενο άτομο και ούτω καθεξής. Η ίδια λογική ισχύει και για τη δομή δεδομένων ουράς.

Εδώ είναι μια διαγραμματική αναπαράσταση της ουράς:

Το Rear αντιπροσωπεύει το σημείο όπου τα αντικείμενα εισάγονται μέσα στην ουρά. Σε αυτό το παράδειγμα, το 7 είναι αξία για αυτό.

Το μέτωπο αντιπροσωπεύει το σημείο όπου θα αφαιρεθούν τα στοιχεία από την ουρά. Εάν αφαιρέσετε ένα στοιχείο από την ουρά, το πρώτο στοιχείο που θα λάβετε είναι 1, όπως φαίνεται στο σχήμα.

Το στοιχείο 1 ήταν το πρώτο που εισήχθη στην ουρά και κατά την αφαίρεση του είναι το πρώτο που βγήκε. Εξ ου και η ουρά ονομάζεται FIRST IN FIRST OUT (FIFO)

Σε μια ουρά, τα στοιχεία καταργούνται με τη σειρά και δεν μπορούν να αφαιρεθούν από ενδιάμεσα. Απλώς δεν μπορείτε να αφαιρέσετε το στοιχείο 5 τυχαία από την ουρά, για να το κάνετε αυτό θα πρέπει να αφαιρέσετε όλα τα στοιχεία πριν από το 5. Τα στοιχεία στην ουρά θα αφαιρεθούν με τη σειρά που εισήχθησαν.

Τύποι ουρών στην Python

Υπάρχουν κυρίως δύο τύποι ουρών στην Python:

  • Πρώτη στην ουρά First out: Για αυτό, το στοιχείο που πηγαίνει πρώτο θα είναι το πρώτο που θα βγει.

    Για να εργαστείτε με το FIFO, πρέπει να καλέσετε την ουρά Queue () από την ενότητα ουράς.

  • Last in First out Queue: Εδώ, το στοιχείο που εισάγεται τελευταία θα είναι το πρώτο που θα βγει.

    Για να εργαστείτε με το LIFO, πρέπει να καλέσετε την κατηγορία LifoQueue () από τη μονάδα ουράς.

Εγκατάσταση ουράς Python

Είναι πολύ εύκολο να δουλέψετε με ουρά στο python. Ακολουθούν τα βήματα που πρέπει να ακολουθήσετε για να χρησιμοποιήσετε την ουρά στον κώδικά σας.

Βήμα 1) Απλώς πρέπει να εισαγάγετε τη μονάδα ουράς, όπως φαίνεται παρακάτω:

import queue

Η ενότητα είναι διαθέσιμη από προεπιλογή με το python και δεν χρειάζεστε επιπλέον εγκατάσταση για να ξεκινήσετε να εργάζεστε με την ουρά. Υπάρχουν 2 τύποι ουρών FIFO (πρώτο στην πρώτη έξοδο) και LIFO (τελευταίο στην πρώτη έξοδο).

Βήμα 2) Για να εργαστείτε με την ουρά FIFO, καλέστε την τάξη Queue χρησιμοποιώντας την ενότητα ουράς που έχει εισαχθεί όπως φαίνεται παρακάτω:

import queueq1 = queue.Queue()

Βήμα 3) Για να εργαστείτε με την ουρά LIFO καλέστε την τάξη LifoQueue () όπως φαίνεται παρακάτω:

import queueq1 = queue.LifoQueue()

Μέθοδοι διαθέσιμες στην κατηγορία Queue και LifoQueue

Ακολουθούν οι σημαντικές διαθέσιμες μέθοδοι στην κατηγορία Queue και LifoQueue:

  • put (item): Αυτό θα τοποθετήσει το στοιχείο στην ουρά.
  • get (): Αυτό θα σας επιστρέψει ένα στοιχείο από την ουρά.
  • κενό (): Θα επιστρέψει αληθές εάν η ουρά είναι κενή και ψευδής εάν υπάρχουν στοιχεία.
  • qsize (): επιστρέφει το μέγεθος της ουράς.
  • full (): επιστρέφει true αν η ουρά είναι πλήρης, διαφορετικά ψευδής.

Παράδειγμα Ουράς στην πρώτη έξοδο

Στην περίπτωση της πρώτης στην πρώτη έξοδο, το στοιχείο που πηγαίνει πρώτο θα είναι το πρώτο που θα βγει.

Προσθήκη και στοιχείο σε ουρά

Ας επεξεργαστούμε ένα παράδειγμα για να προσθέσουμε ένα στοιχείο σε μια ουρά. Για να ξεκινήσετε να εργάζεστε με την ουρά, εισαγάγετε πρώτα την ουρά λειτουργικής μονάδας, όπως φαίνεται στο παρακάτω παράδειγμα.

Για να προσθέσετε ένα στοιχείο, μπορείτε να χρησιμοποιήσετε τη μέθοδο put () όπως φαίνεται στο παράδειγμα:

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

Από προεπιλογή, το μέγεθος της ουράς είναι άπειρο και μπορείτε να προσθέσετε οποιοδήποτε αριθμό αντικειμένων σε αυτό. Σε περίπτωση που θέλετε να ορίσετε το μέγεθος της ουράς, το ίδιο μπορεί να γίνει ως εξής

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.

Παραγωγή:

True

Τώρα το μέγεθος της ουράς είναι 5 και δεν θα πάρει περισσότερα από 5 στοιχεία και η μέθοδος q1.full () θα επιστρέψει αληθινή. Η προσθήκη περισσότερων αντικειμένων δεν θα εκτελέσει περαιτέρω τον κώδικα.

Καταργήστε ένα στοιχείο από την ουρά

Για να καταργήσετε ένα στοιχείο από την ουρά, μπορείτε να χρησιμοποιήσετε τη μέθοδο που ονομάζεται get (). Αυτή η μέθοδος επιτρέπει στοιχεία από την ουρά κατά την κλήση.

Το παρακάτω παράδειγμα δείχνει πώς να αφαιρέσετε ένα στοιχείο από την ουρά.

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

Παραγωγή:

The item removed from the queue is 10

Παράδειγμα ουράς Last In First Out

Στην περίπτωση της τελευταίας στην πρώτη ουρά, το στοιχείο που εισάγεται τελευταία θα είναι το πρώτο που θα βγει.

Για να δουλέψουμε με το LIFO, δηλαδή, τελευταίο στην πρώτη ουρά, πρέπει να εισαγάγουμε τη μονάδα ουράς και να χρησιμοποιήσουμε τη μέθοδο LifoQueue ()

Προσθήκη και στοιχείο σε ουρά

Εδώ θα καταλάβουμε πώς να προσθέσουμε ένα στοιχείο στην ουρά LIFO.

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

Πρέπει να χρησιμοποιήσετε τη μέθοδο put () στο LifoQueue, όπως φαίνεται στο παραπάνω παράδειγμα.

Καταργήστε ένα στοιχείο από την ουρά

Για να αφαιρέσετε ένα στοιχείο από το LIFOqueue μπορείτε να χρησιμοποιήσετε τη μέθοδο get ().

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

Παραγωγή:

The item removed from the LIFO queue is 10

Προσθέστε περισσότερα από 1 στοιχεία στην ουρά

Στα παραπάνω παραδείγματα, έχουμε δει πώς να προσθέσουμε ένα μεμονωμένο στοιχείο και να καταργήσουμε το στοιχείο για FIFO και LIFOqueue. Τώρα θα δούμε πώς να προσθέσουμε περισσότερα από ένα στοιχεία και επίσης να το αφαιρέσουμε.

Προσθήκη και στοιχείο σε ένα FIFOqueue

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

Αφαιρέστε ένα στοιχείο από το 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.

Παραγωγή:

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

Προσθήκη και στοιχείο σε ένα LIFOqueue

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

Αφαιρέστε ένα στοιχείο από το 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. 

Παραγωγή:

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

Ταξινόμηση ουράς

Το ακόλουθο παράδειγμα δείχνει την ταξινόμηση ουρών. Ο αλγόριθμος που χρησιμοποιείται για ταξινόμηση είναι ταξινόμηση φυσαλίδων

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

Παραγωγή:

3 4 5 10 11 21

Αντιστροφή ουράς

Για να αντιστρέψετε την ουρά, μπορείτε να χρησιμοποιήσετε άλλη ουρά και αναδρομή.

Το παρακάτω παράδειγμα δείχνει πώς μπορείτε να αντιστρέψετε την ουρά.

Παράδειγμα:

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

Παραγωγή:

10 3 21 4 5 11

Περίληψη:

  • Η ουρά είναι ένα κοντέινερ που κρατά δεδομένα. Υπάρχουν δύο τύποι Queue, FIFO και LIFO.
  • Για ένα FIFO (First in First out Queue), το στοιχείο που πηγαίνει πρώτο θα είναι το πρώτο που θα βγει.
  • Για ένα LIFO (Last in First out Queue), το στοιχείο που εισάγεται τελευταία θα είναι το πρώτο που θα βγει.
  • Προστίθεται ένα στοιχείο σε ουρά χρησιμοποιώντας τη μέθοδο put (item).
  • Για να καταργήσετε ένα αντικείμενο, χρησιμοποιείται η μέθοδος get ().