Python Sırası nedir?
Kuyruk, verileri tutan bir kapsayıcıdır. İlk olarak girilen veriler önce kaldırılır ve bu nedenle bir kuyruğa "İlk Giren İlk Çıkar" (FIFO) da denir. Kuyruğun önde ve arkada iki ucu vardır. Öğeler arkadan girilir ve ön taraftan çıkarılır.
Bu Python eğitiminde şunları öğreneceksiniz:
- Python Sırası nedir?
- Python Sırası Nasıl Çalışır?
- Python'da Sıra Türleri
- Python kuyruğu Kurulumu
- Queue ve LifoQueue sınıfında kullanılabilen yöntemler
- İlk Giren İlk Çıkar Sırası Örneği
- Son Giren İlk Çıkar kuyruğu Örneği
- Bir Kuyruğa 1'den fazla öğe ekleyin
- Sıralama Kuyruğu
- Ters Kuyruk
Python Sırası Nasıl Çalışır?
Sıra, gerçek dünya örneğiyle kolayca karşılaştırılabilir; bilet gişesinde bir kuyrukta bekleyen insan sırası, önce duran kişi önce bileti alır, ardından bir sonraki kişi vb. Aynı mantık, kuyruk veri yapısı için de geçerlidir.
İşte kuyruğun şematik bir temsili:
Arka ürün sıraya içine yerleştirilir noktasını temsil eder. Bu örnekte, 7 bunun için değerdir.
Ön kuyruğundan ürün kaldırılacaktır noktasını temsil eder. Kuyruktan bir öğeyi çıkarırsanız, alacağınız ilk öğe şekilde gösterildiği gibi 1 olur.
Sıraya ilk eklenen öğe 1'di ve kaldırılırken ilk çıkan öğe oldu. Dolayısıyla kuyruğa İLK ÇIKIŞTA İLK (FIFO) adı verilir.
Bir kuyrukta, öğeler sırayla kaldırılır ve arada kaldırılamaz. Sıradan rastgele olarak öğe 5'i kaldıramazsınız, bunu yapmak için 5'ten önce tüm öğeleri kaldırmanız gerekir. Kuyruktaki öğeler yerleştirildikleri sıraya göre kaldırılacaktır.
Python'da Sıra Türleri
Python'da başlıca iki tür kuyruk vardır:
- First in First out Queue: Bunun için ilk giren eleman ilk çıkan olacaktır.
FIFO ile çalışmak için , kuyruk modülünden Queue () sınıfını çağırmanız gerekir .
- İlk Çıkar Sırasında Son: Burada, en son girilen eleman ilk çıkan olacaktır.
LIFO ile çalışmak için kuyruk modülünden LifoQueue () sınıfını çağırmanız gerekir .
Python kuyruğu Kurulumu
Python'da queue ile çalışmak çok kolaydır. İşte kodunuzda kuyruğu kullanmak için izlenecek adımlar.
Adım 1) Aşağıda gösterildiği gibi kuyruk modülünü içe aktarmanız yeterlidir:
import queue
Modül varsayılan olarak python ile mevcuttur ve kuyrukla çalışmaya başlamak için herhangi bir ek kuruluma ihtiyacınız yoktur. 2 tür sıra FIFO (ilk giren ilk çıkar) ve LIFO (son giren ilk çıkar) vardır.
Adım 2) FIFO kuyruğu ile çalışmak için, aşağıda gösterildiği gibi içe aktarılan kuyruk modülünü kullanarak Queue sınıfını çağırın:
import queueq1 = queue.Queue()
Adım 3) LIFO kuyruğuyla çalışmak için LifoQueue () sınıfını aşağıda gösterildiği gibi çağırın:
import queueq1 = queue.LifoQueue()
Queue ve LifoQueue sınıfında kullanılabilen yöntemler
Queue ve LifoQueue sınıfında bulunan önemli yöntemler şunlardır:
- put (öğe): Bu, öğeyi sıraya koyacaktır.
- get (): Bu size kuyruktan bir öğe döndürecektir.
- empty (): Kuyruk boşsa true, öğeler varsa false döndürür.
- qsize (): kuyruğun boyutunu döndürür.
- full (): kuyruk doluysa true, aksi takdirde false döndürür.
İlk Giren İlk Çıkar Sırası Örneği
İlk giren ilk çıkar durumunda, ilk giren eleman ilk çıkan olacaktır.
Sıraya ekle ve öğe
Sıraya bir öğe eklemek için bir örnek üzerinde çalışalım. Kuyrukla çalışmaya başlamak için, önce aşağıdaki örnekte gösterildiği gibi modül kuyruğunu içe aktarın.
Bir öğe eklemek için örnekte gösterildiği gibi put () yöntemini kullanabilirsiniz:
import queueq1 = queue.Queue()q1.put(10) #this will additem 10 to the queue.
Varsayılan olarak, kuyruğun boyutu sonsuzdur ve ona istediğiniz sayıda öğe ekleyebilirsiniz. Kuyruğun boyutunu tanımlamak istemeniz durumunda, aynı şey aşağıdaki gibi yapılabilir.
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.
Çıktı:
True
Şimdi sıranın boyutu 5'tir ve 5'ten fazla öğe almayacaktır ve q1.full () yöntemi true değerini döndürecektir. Daha fazla öğe eklemek kodu artık çalıştırmayacaktır.
Kuyruktan bir öğeyi kaldır
Kuyruktan bir öğeyi çıkarmak için get () adlı yöntemi kullanabilirsiniz. Bu yöntem, çağrıldığında kuyruktaki öğelere izin verir.
Aşağıdaki örnek, bir öğenin kuyruktan nasıl kaldırılacağını gösterir.
import queueq1 = queue.Queue()q1.put(10)item1 = q1.get()print('The item removed from the queue is ', item1)
Çıktı:
The item removed from the queue is 10
Son Giren İlk Çıkar kuyruğu Örneği
İlk çıkış kuyruğunda sonuncusu olması durumunda, en son girilen eleman ilk çıkan olacaktır.
LIFO ile çalışmak, yani ilk çıkış kuyruğunun sonuncusu için, kuyruk modülünü içe aktarmamız ve LifoQueue () yöntemini kullanmamız gerekir.
Sıraya ekle ve öğe
Burada LIFO kuyruğuna nasıl öğe ekleyeceğimizi anlayacağız.
import queueq1 = queue.LifoQueue()q1.put(10)
Yukarıdaki örnekte gösterildiği gibi, LifoQueue'da put () yöntemini kullanmanız gerekir.
Kuyruktan bir öğeyi kaldır
LIFOqueue'dan bir öğeyi kaldırmak için get () yöntemini kullanabilirsiniz.
import queueq1 = queue.LifoQueue()q1.put(10)item1 = q1.get()print('The item removed from the LIFO queue is ', item1)
Çıktı:
The item removed from the LIFO queue is 10
Bir Kuyruğa 1'den fazla öğe ekleyin
Yukarıdaki örneklerde, tek bir öğenin nasıl ekleneceğini ve FIFO ve LIFOqueue için öğenin nasıl kaldırılacağını gördük. Şimdi birden fazla öğeyi nasıl ekleyeceğimizi ve kaldıracağımızı göreceğiz.
Bir FIFOqueue'a ekle ve öğe
import queueq1 = queue.Queue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue
FIFOqueue'dan bir öğeyi kaldırın
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.
Çıktı:
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'a ekle ve öğe
import queueq1 = queue.LifoQueue()for i in range(20):q1.put(i) # this will additem from 0 to 20 to the queue
LIFOqueue'dan bir öğeyi kaldırın
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.
Çıktı:
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
Sıralama Kuyruğu
Aşağıdaki örnekte kuyruk sıralaması gösterilmektedir. Sıralama için kullanılan algoritma balonlu sıralamadır.
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()
Çıktı:
3 4 5 10 11 21
Ters Kuyruk
Sırayı tersine çevirmek için başka bir kuyruk ve özyineleme kullanabilirsiniz.
Aşağıdaki örnek, sıranın nasıl tersine çevrileceğini gösterir.
Misal:
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()
Çıktı:
10 3 21 4 5 11
Özet:
- Kuyruk, verileri tutan bir kapsayıcıdır. İki tür Kuyruk vardır, FIFO ve LIFO.
- Bir FIFO (İlk Giren İlk Çıkar Kuyruğu) için, ilk giren öğe ilk çıkan öğe olacaktır.
- LIFO (Last in First out Queue) için, en son girilen öğe ilk çıkan öğe olacaktır.
- Sıradaki bir öğe, put (öğe) yöntemi kullanılarak eklenir.
- Bir öğeyi kaldırmak için get () yöntemi kullanılır.