Python öncelik sırası

| | | | | | | | | | | | | | | | | | | | | | | | | | | |

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 modulunu kullanmak.

Verileri listedeki her bir öğenin değerlerine göre sıralamak isteyebilirsiniz. Örneğin, en yuksek değerin listede ilk, en duşuk değerin ise listede en son görunmesini 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 kuçuk ve en buyuk 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 yuksek ö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) duzeninde 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. Bugun 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 modulunu 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:

Diyelim ki yerel bir konserde bilet sahipleri için bir √∂ncelik sƒ±rasƒ± olu≈üturmak istiyoruz. Bunu ≈üu kodu kullanarak yapabiliriz:

Kodumuz şunu döndurur:

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 uç demet ekleriz.

Bir Python while d√∂ngusu 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 Modulu

Heapq modulu, 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 duşuk değer en duşuk önceliğe ve en yuksek değer en yuksek önceliğe sahiptir.

Heapq modulunu kullanmadan önce, aşağıdaki import ifadesini kullanarak kodumuza aktarmalıyız:

√ñ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 modulunu ve bu programƒ± kullanarak:

Kodumuz şunu döndurur:

√ñ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öngusu oluşturduk. Bu döngu, heappop() kullanarak kuyruğun en ustundeki öğeyi kaldırır. Ardından, kaldırılan öğe konsola yazdırılır. Görduğunuz gibi, sıramızdaki tum öğ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 duzende 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 buyuk 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 Muhendisi

< p>Kodumuz şunu döndurur:

ticket_holders adƒ±nda bir liste olu≈üturduk, ardƒ±ndan listeye uç 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öngusu oluşturduk. ticket_holders listesi ve listenin en ustundeki öğ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 modulunu 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.