Apa itu Python Queue?
Antrian adalah wadah yang menyimpan data. Data yang dimasukkan pertama akan dikeluarkan terlebih dahulu, dan oleh itu barisan juga disebut "First in First Out" (FIFO). Antrian mempunyai dua hujung depan dan belakang. Barang dimasukkan dari belakang dan dikeluarkan dari bahagian depan.
Dalam tutorial Python ini, anda akan belajar:
- Apa itu Python Queue?
- Bagaimana Python Queue berfungsi?
- Jenis Antrian di Python
- Pemasangan barisan Python
- Kaedah yang terdapat di dalam kelas Queue dan LifoQueue
- Contoh Barisan Pertama Dalam Keluar
- Contoh giliran Last In First Out
- Tambahkan lebih daripada 1 item dalam Antrian
- Menyusun Baris
- Antrian Berbalik
Bagaimana Python Queue berfungsi?
Antrian dapat dibandingkan dengan mudah dengan contoh dunia nyata barisan orang yang menunggu dalam barisan di kaunter tiket, orang yang berdiri pertama akan mendapat tiket terlebih dahulu, diikuti oleh orang seterusnya dan seterusnya. Logik yang sama berlaku untuk struktur data antrian juga.
Berikut adalah gambaran gambarajah giliran:
Yang belakang mewakili titik di mana barang-barang yang dimasukkan dalam barisan. Dalam contoh ini, 7 adalah nilai untuk itu.
Bahagian Depan mewakili titik di mana item dari barisan akan dikeluarkan. Sekiranya anda mengeluarkan item dari barisan, elemen pertama yang anda akan dapat ialah 1, seperti yang ditunjukkan dalam gambar.
Item 1 adalah yang pertama dimasukkan ke dalam barisan, dan semasa mengeluarkannya adalah item pertama yang keluar. Oleh itu, barisan dipanggil FIRST IN FIRST OUT (FIFO)
Dalam barisan, item dikeluarkan secara berurutan dan tidak dapat dikeluarkan dari antara. Anda tidak boleh mengeluarkan item 5 secara rawak dari barisan, untuk melakukan itu anda harus membuang semua item sebelum 5. Item dalam barisan akan dikeluarkan mengikut urutan dimasukkan.
Jenis Antrian di Python
Terdapat dua jenis barisan utama di Python:
- First in First out Queue: Untuk ini, elemen yang menjadi yang pertama akan menjadi yang pertama keluar.
Untuk bekerjasama dengan FIFO, anda perlu memanggil kelas Queue () dari modul queue.
- Last in Que out Queue: Di sini, elemen yang dimasukkan terakhir akan menjadi yang pertama keluar.
Untuk bekerjasama dengan LIFO, anda mesti memanggil kelas LifoQueue () dari modul barisan.
Pemasangan barisan Python
Sangat mudah untuk bekerja dengan barisan di python. Berikut adalah langkah-langkah yang harus diikuti untuk menggunakan barisan dalam kod anda.
Langkah 1) Anda hanya perlu mengimport modul beratur, seperti gambar di bawah:
import queue
Modul ini tersedia secara lalai dengan python, dan anda tidak memerlukan pemasangan tambahan untuk mula bekerja dengan barisan. Terdapat 2 jenis barisan FIFO (pertama di keluar pertama) dan LIFO (terakhir di jalan keluar pertama).
Langkah 2) Untuk bekerja dengan FIFO queue, panggil kelas Queue menggunakan modul antrian yang diimport seperti yang ditunjukkan di bawah:
import queueq1 = queue.Queue()
Langkah 3) Untuk bekerja dengan barisan LIFO, panggil kelas LifoQueue () seperti gambar di bawah:
import queueq1 = queue.LifoQueue()
Kaedah yang terdapat di dalam kelas Queue dan LifoQueue
Berikut adalah kaedah penting yang terdapat di dalam kelas Queue dan LifoQueue:
- put (item): Ini akan meletakkan item di dalam barisan.
- get (): Ini akan mengembalikan item dari barisan kepada anda.
- kosong (): Ia akan kembali benar jika barisan kosong dan palsu jika item ada.
- qsize (): mengembalikan ukuran barisan.
- penuh (): kembali benar jika barisan penuh, jika tidak palsu.
Contoh Barisan Pertama Dalam Keluar
Sekiranya berlaku pertama dalam keluar pertama, elemen yang menjadi yang pertama akan menjadi yang pertama keluar.
Tambah dan item dalam barisan
Mari kita buat contoh untuk menambah item dalam barisan. Untuk mula bekerja dengan barisan, pertama-tama import barisan modul, seperti yang ditunjukkan dalam contoh di bawah.
Untuk menambahkan item, anda boleh menggunakan kaedah put () seperti yang ditunjukkan dalam contoh:
import queueq1 = queue.Queue()q1.put(10) #this will additem 10 to the queue.
Secara lalai, ukuran barisan tidak terbatas dan anda boleh menambahkan sebilangan item ke dalamnya. Sekiranya anda ingin menentukan ukuran barisan yang sama boleh dilakukan seperti berikut
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.
Pengeluaran:
True
Sekarang ukuran barisan adalah 5, dan tidak akan mengambil lebih dari 5 item, dan kaedah q1.full () akan kembali benar. Menambah item lagi tidak akan menjalankan kodnya lebih jauh.
Keluarkan item dari barisan
Untuk mengeluarkan item dari barisan, anda boleh menggunakan kaedah yang disebut get (). Kaedah ini membolehkan item dari barisan semasa dipanggil.
Contoh berikut menunjukkan cara membuang item dari barisan.
import queueq1 = queue.Queue()q1.put(10)item1 = q1.get()print('The item removed from the queue is ', item1)
Pengeluaran:
The item removed from the queue is 10
Contoh giliran Last In First Out
Sekiranya terdapat barisan terakhir dalam barisan keluar pertama, elemen yang dimasukkan terakhir akan menjadi yang pertama keluar.
Untuk bekerja dengan LIFO, iaitu terakhir dalam barisan pertama, kita perlu mengimport modul beratur dan menggunakan kaedah LifoQueue ().
Tambah dan item dalam barisan
Di sini kita akan memahami cara menambahkan item ke dalam barisan LIFO.
import queueq1 = queue.LifoQueue()q1.put(10)
Anda harus menggunakan kaedah put () pada LifoQueue, seperti yang ditunjukkan dalam contoh di atas.
Keluarkan item dari barisan
Untuk mengeluarkan item dari LIFOqueue, anda boleh menggunakan kaedah get ().
import queueq1 = queue.LifoQueue()q1.put(10)item1 = q1.get()print('The item removed from the LIFO queue is ', item1)
Pengeluaran:
The item removed from the LIFO queue is 10
Tambahkan lebih daripada 1 item dalam Antrian
Dalam contoh di atas, kami telah melihat cara menambahkan item tunggal dan membuang item tersebut untuk FIFO dan LIFOqueue. Sekarang kita akan melihat cara menambahkan lebih dari satu item dan juga menghapusnya.
Tambah dan masukkan item dalam FIFOqueue
import queueq1 = queue.Queue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue
Keluarkan item dari 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.
Pengeluaran:
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
Tambah dan item dalam LIFOqueue
import queueq1 = queue.LifoQueue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue
Keluarkan item dari 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.
Pengeluaran:
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
Menyusun Baris
Contoh berikut menunjukkan penyortiran barisan. Algoritma yang digunakan untuk menyusun adalah semacam buih.
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()
Pengeluaran:
3 4 5 10 11 21
Antrian Berbalik
Untuk membalikkan barisan, anda boleh menggunakan antrian dan rekursi yang lain.
Contoh berikut menunjukkan cara membalikkan barisan.
Contoh:
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()
Pengeluaran:
10 3 21 4 5 11
Ringkasan:
- Antrian adalah wadah yang menyimpan data. Terdapat dua jenis Queue, FIFO, dan LIFO.
- Untuk FIFO (First in First out Queue), elemen yang menjadi yang pertama akan menjadi yang pertama keluar.
- Untuk LIFO (Last in First out Queue), elemen yang dimasukkan terakhir akan menjadi yang pertama keluar.
- Item dalam barisan ditambahkan menggunakan kaedah put (item).
- Untuk membuang item, kaedah get () digunakan.