Python öncelik sırası

Python işlevleri ve meth




Python Priority Queue: A Guide

Python öncelik sırası, verileri belirli bir sırada depolar. Python'da bir öncelik sırası uygulamanın iki yolu vardır: kuyruk sınıfını kullanmak ve heapq modülünü kullanmak.

Verileri listedeki her bir öğenin değerlerine göre sıralamak isteyebilirsiniz. Örneğin, en yüksek değerin listede ilk, en düşük değerin ise listede en son görünmesini isteyebilirsiniz.

Öncelik sıralarının geldiği yer burasıdır. Öncelik sırası bir veri yapısıdır. anahtarlarının değerine göre artan sırada veri depolar. Bu, sıradaki en küçük ve en büyük değere kolayca erişmenizi sağlar.

Bu eğitici, öncelik sıraları oluşturmak için neden bir liste kullanmamanız gerektiğini tartışacaktır. Size bir Python öncelik sırası oluşturmak için kullanabileceğiniz iki etkili yaklaşım daha göstereceğiz.




Python Öncelik Sırası nedir?

Öncelik sıraları, sıranın değiştirilmiş bir versiyonudur. hangi öğenin en yüksek önceliğe sahip olduğu sırayla veri. Öncelik kuyruğundaki her bir öğenin önceliği, öğenin değerine bağlı olarak kararlaştırılır.

Bilgisayar biliminde, sıralar, öğeleri ilk giren ilk çıkar (FIFO) düzeninde depolayan veri yapılarıdır. . Bu yapıyı kullanmanın yardımcı olabileceği birkaç senaryo vardır.

Örneğin, bir restoran için sipariş izleme uygulaması oluşturduğunuzu varsayalım. Önce sipariş veren kişiye, sıradaki sipariş verenden önce servis yapılmalıdır. Siparişleri takip etmek için bir kuyruk kullanmak isteyebilirsiniz.

Python'da bir öncelik sırası tanımlamanın iki yolu vardır:

Katılımcıların %81'i bundan daha emin hissettiklerini belirtti. bir eğitim kampına katıldıktan sonra teknik iş beklentileri. Bugün bir eğitim kampı ile eşleştirin.

Ortalama bir eğitim kampı mezunu, bir eğitim kampına başlamaktan ilk işini bulmaya kadar, kariyer geçişinde altı aydan az zaman harcadı.

Bir öncelik sırası tanımlayabilirsiniz. bir liste yapısı kullanarak. Ancak bu strateji PriorityQueue kuyruk sınıfını veya heapq modülünü kullanmaktan daha az verimlidir.




Priority Queue Python: tail.PriorityQueue

queue.PriorityQueue class bir Python öncelik sırası oluşturur. Bu sınıf, Python kuyruk kitaplığının bir parçasıdır. Bu sınıfı kullanmak için kuyruk kitaplığını içe aktarmanız gerekir. PriorityQueue'dan bir öğeyi almak için get() yöntemini kullanabilirsiniz.

PriorityQueue sınıfına erişmek için, bunu Python içe aktarma ifadesi:

sıradan içe aktarma PriorityQueue

Diyelim ki yerel bir konserde bilet sahipleri için bir öncelik sırası oluşturmak istiyoruz. Bunu şu kodu kullanarak yapabiliriz:

sıradan içe aktarma PriorityQueue ticket_holders = PriorityQueue() ticket_holders.put(( 3, 'Paul')) ticket_holders.put((1, 'Miles')) ticket_holders.put((2, 'Dani')) değil, ticket_holders.empty(): item = bilet_holders.get() print(item) 

Kodumuz şunu döndürür:

(1, 'Miles') (2, 'Dani') (3, 'Paul')

Kodumuzda, önce PriorityQueue sınıfını queue kitaplığından içe aktarıyoruz, ardından ticket_holders adlı bir öncelik sırası. Ardından, bir biletle ilişkili bilet numaralarını ve adları saklayan öncelik sıramıza üç demet ekleriz.

Bir Python while döngüsü kullanırız ticket_holders öncelik kuyruğundaki her öğeyi gözden geçirmek için . Ardından, get() kullanarak bu öğeyi alırız.

queue.PriorityQueue yöntemi verimli ve kullanımı kolaydır, bu da onu harika bir seçim yapar bir öncelik sırası oluşturmanız gerektiğinde.




Öncelik Sırası Python heapq Modülü

Heapq modülü, bir Python öncelik sırası tanımlamanıza izin verir. Bir heapq veri yapısı, öğeleri öncelik sırasına göre kaldırır. Heapq yapısında en düşük değer en düşük önceliğe ve en yüksek değer en yüksek önceliğe sahiptir.


Heapq modülünü kullanmadan önce, aşağıdaki import ifadesini kullanarak kodumuza aktarmalıyız:

import heapq

Önceki örneğimize dönelim. Bir konserde bilet sahipleri hakkında bilgi depolamak için bir öncelik sırası oluşturmak istediğimizi varsayalım. yani heapq modülünü ve bu programı kullanarak:

iport heapq ticket_holders = [] heapq.heappush(ticket_holders, ( 3, 'Paul')) heapq.heappush(ticket_holders, (1, 'Miles')) heapq.heappush(ticket_holders, (2, 'Dani')) while bilet sahipleri: item = heapq.heappop(ticket_holders) print(item) 

Kodumuz şunu döndürür:

(1, 'Miles') (2, 'Dani') (3, 'Pa ul')

Önce heapq kitaplığını içe aktardık ve ardından ticket_holders adında bir Python değişkeni başlattık . Üç demeti öncelik sıramıza göndermek için heappush() yöntemini kullandık. Bu kuyruk, her bir bilet sahibinin bilet numaralarını ve her bir bilet sahibinin adını saklar.

Daha sonra öncelik sıramızdaki her bir öğe arasında dolaşan bir while döngüsü oluşturduk. Bu döngü, heappop() kullanarak kuyruğun en üstündeki öğeyi kaldırır. Ardından, kaldırılan öğe konsola yazdırılır. Gördüğünüz gibi, sıramızdaki tüm öğeler öncelik sırasına göre yazdırılıyor.




Neden Liste Tutmamalısınız

Teknik olarak, kullanarak bir öncelik sırası oluşturabilirsiniz. Python listesi veri yapısı. Bunu yapmak için bir liste oluşturacak ve ardından artan düzende sıralayacaksınız.

Ancak bu, bir öncelik sırasını korumanın nispeten verimsiz bir yoludur. Listedeki öğeleri değiştirdikçe, listeyi yeniden sıralamanız gerekir, bu da zaman alır.

Yalnızca birkaç değeri saklamanız gerekiyorsa, geleneksel bir listeyi öncelik sırası olarak kullanabilirsiniz. Ancak, daha büyük bir sıra oluşturmak istiyorsanız, listeler iyi bir seçenek değildir.


Başvuru için, listeleri kullanarak bir öncelik sırası örneğini inceleyelim. Bir konsere ilk girmesi gereken bilet sahiplerinin sırasını saklayan bir öncelik sırası oluşturmak istediğimizi varsayalım. bu kuyruğu oluşturmak için aşağıdaki kodu kullanın:

"Python.Engineering hayatıma en çok ihtiyacım olduğu anda girdi ve hızlı bir şekilde bir bootcamp ile eşleşmeme yardımcı oldu. Mezun olduktan iki ay sonra, hayattaki değerlerim ve hedeflerime uygun hayalimdeki işi buldum!"

Venus, Rockbot'ta Yazılım Mühendisi

< p>Kodumuz şunu döndürür:

(1, 'Miles') (2, 'Dani') (3 , 'Paul')

ticket_holders adında bir liste oluşturduk, ardından listeye üç demet ekledik. Her bir demet bir bilet sahibinin bilet numarasını içeriyordu. Ardından, bilet sahipleri listemizi ters sırada sıralamak için Python sort() işlevini kullandık.

Her öğeyi yineleyen bir while döngüsü oluşturduk. ticket_holders listesi ve listenin en üstündeki öğe. Ardından, kodumuz kaldırılan öğeyi konsola yazdırır.




Sonuç

İkisi öncelik sırası oluşturmak için en yaygın olanı, heapq modülünü veya queue.PriorityQueue sınıfını kullanmaktır. Teknik olarak bir listeyi öncelik sırası olarak kullanabilirsiniz, ancak bu yaklaşım iyi ölçeklenmiyor.

Bu eğiticide, örneklere referansla Python'da bir öncelik kuyruğunun nasıl oluşturulacağı tartışıldı. Artık bir Python uzmanı gibi kendi öncelik sıralarınızı oluşturmaya başlamak için ihtiyacınız olan bilgilerle donatıldınız!

Python'u nasıl öğreneceğiniz konusunda daha fazla rehberlik için eksiksiz Python Nasıl Öğrenilir kılavuzu.





Python öncelik sırası: StackOverflow Questions

Tutorials