Deque In Python – bemutató példákkal

Ha Ön Python-fejlesztő, valószínűleg hallott már a deque-ről vagy a „kétvégű sorról”. Ez egy hatékony eszköz, amely növelheti az alkalmazás hatékonyságát és felgyorsíthatja annak teljesítményét.

A deque egy speciális tároló adattípus, amely gyorsabb hozzáfűzési és pop műveleteket kínál a tároló mindkét végéről. Ez értékes eszközzé teszi a sorok és veremek megvalósításához, amelyek a számítástechnikában gyakori listaszerű adattípusok.

Ez egy alacsony szintű és nagymértékben optimalizált adatstruktúra, amely nagyon hasznos különféle alkalmazásokhoz. Python-programozóként a deque az egyik eszköz, amelyet az arzenáljában szeretne tartani.

Folytassa az olvasást, hogy többet megtudjon a Deques-ről és arról, hogyan alkalmazhatja őket a !

Deque In Python – bemutató példákkal

Tartalomjegyzék

Mi az a Deque?

Ha még nem ismeri a Python-t vagy általában a számítógép-programozást, akkor felmerülhet a kérdés, mi az a deque. A Deque a „ kétvégű várólista ” rövidítése , és ez egy olyan adatstruktúra, amely lehetővé teszi elemek hozzáadását és eltávolítását a sor mindkét végéről.

Hasonlít egy normál sorhoz, de megnövelt rugalmassággal, hogy a sor elejéről és hátuljáról is felvehet és eltávolíthat elemeket. Ez azért lehetséges, mert a Python deque-je duplán linkelt listaként van megvalósítva.

A Pythonban a deque-eket a gyűjtemények modul segítségével valósítják meg, amely egy deque osztályt biztosít. Ez az osztály számos módszert biztosít az elemek hozzáadásához és eltávolításához a deque-ből.

Funkciókat biztosít más hasznos műveletekhez is, mint például a deque forgatásához vagy teljes törléséhez.

A Python Deque jellemzői

A szokásos listától eltérően, amelynek O(n) időbonyolultsága van az append és pop műveletekhez, a deque egy O(1) idejű összetettséget biztosít. Ez jelentősen gyorsabbá és memóriahatékonyabbá teszi ezeket az olvasási és írási műveleteket.

Íme néhány további Python deque funkció, amelyet tudnia kell:

  • Ez egy változtatható adatstruktúra.

  • Többféle adattípust is tárolhat, pl. egész számokat, sorokat, tömböket stb.

  • Támogatja az indexelést, de nem a szeletelési műveleteket.

  • Nem támogatja a helyben történő válogatást

  • Támogatja a gyakori beépített iterálható függvényeket és műveleteket, mint például in , sorted() , len() , reverse() stb.

Az A Deque alkalmazásai

A deque-ek számos okból hasznosak. Használhatók például sorok vagy veremek megvalósítására, amelyek mindkettő gyakori adatstruktúra a számítástechnikában.

Használhatók továbbá az adatok valós idejű hatékony feldolgozására, például streaming alkalmazásokban vagy olyan rendszerekben, amelyek gyors hozzáférést igényelnek az adatokhoz.

Amellett, hogy sorokhoz és veremekhez használhatók, a deque-ek szélesség-első keresési algoritmusok megvalósítására is használhatók. Hasznosak az elemek tolóablakának nagyobb sorrendben való megtartásához is.

Deque létrehozása és inicializálása

A gyűjtemény modul egy beépített funkciójával készíthet deque-t. Nézzük meg alaposan, hogyan hozhatja létre és töltheti fel ezt az adatstruktúrát.

A deque() függvény használata

A Pythonban deque létrehozásához használhatja a beépített deque() függvényt a gyűjtemények modulból. Ez a függvény egy új üres deque objektumot ad vissza, amelyet kétvégű sor megvalósítására használhat.

Íme egy példa egy üres deque objektum létrehozására:

from collections import deque 

my_deque = deque() 

Létrehozhat deque-t kezdeti elemekkel is, ha egy iterálható elemet (lista, sor stb.) ad át a deque() függvénynek. A deque inicializálása az iterálható elemekkel történik balról jobbra.

Íme egy példa:

from collections import deque

my_list = [1, 2, 3, 4, 5] 
my_deque = deque(my_list)

Deque inicializálása elemekkel

Egy üres deque elemet is inicializálhat különböző módszerekkel. Ennek egyik módja, hogy az append() és appendleft() metódusokat használva elemeket adunk a deque-hez a jobb, illetve a bal oldalról.

Íme egy példa:

from collections import deque

#Initialize the empty deque
my_deque = deque()
print(my_deque)

#Add Values to the deque
my_deque.append(1) 
my_deque.append(2) 
my_deque.appendleft(3) 

print(my_deque)

A kód futtatása után a deque tartalmazza a [3, 1, 2] elemeket.

Deque In Python – bemutató példákkal

A deque elemekkel történő inicializálásának másik módja az elemek listájának átadása a deque() függvénynek.

Íme egy példa:

from collections import deque

my_deque = deque([1, 2, 3]) 

A kód futtatása létrehoz egy deque objektumot, amely az [1, 2, 3] elemeket tartalmazza .

Összességében a deque létrehozása és inicializálása Pythonban egyszerű, és a beépített deque() függvény segítségével is elvégezhető . Ezt úgy is megteheti, hogy elemeket ad hozzá egy üres deque-hez az append() és appendleft() metódusokkal.

Hogyan hajtsunk végre közös deque műveleteket

A Pythonban számos műveletet végrehajthat a deque-objektumokon. Nézzünk meg néhányat a népszerűbbek közül.

Elemek hozzáadása a Deque-hez

Az append() és appendleft() metódusokkal adhat hozzá elemeket a deque-hez . Az append() metódus hozzáad egy elemet a deque jobb végéhez, míg az appendleft() metódus hozzáad egy elemet a deque bal végéhez.

Íme egy példa:

import collections 

# Create an empty deque 
my_deque = collections.deque() 

# Add elements to the deque 
my_deque.append(1) 
my_deque.appendleft(2) 
my_deque.append(3) 

print(my_deque) 

# Output: 
deque([2, 1, 3])

Több adatelem hozzáadása a deque-hez

Ha nem szeretnénk egyenként adatelemeket hozzáadni a deque-hez, akkor az extend() vagy extendleft() függvényekkel felgyorsíthatjuk a folyamatot . Ezek a függvények egy iterálhatót vesznek fel, és hozzáfűzik az iterálható tartalmát a deque végéhez, illetve bal végéhez.

Íme egy példa:

from collections import deque

my_list = [1, 2, 3, 4, 5] 
my_deque = deque(my_list)

#Creating a tuple and list
cont = (11, 12, 13, 14)
full = [10,20,30]

#Extending the deque from the right
my_deque.extend(cont)
print(my_deque)

#Extending the deque from the left
my_deque.extendleft(full)
print(my_deque)

A fenti kódban az extend() függvény hozzáfűzi a cont sor több értékét a deque végéhez. Ezután az extendleft() függvény a teljes lista több adatelemét hozzáfűzi a deque bal végéhez.

Deque In Python – bemutató példákkal

Elemek eltávolítása a Deque-ből

A pop() és popleft() metódusokkal eltávolíthat elemeket a Python-deque-ből . A pop() metódus eltávolítja és visszaadja a deque jobb szélső elemét, míg a popleft() metódus eltávolítja és visszaadja a deque bal szélső elemét.

Íme egy példa:

import collections 

#Create a deque with some elements 
my_deque = collections.deque([1, 2, 3, 4, 5]) 

#Remove elements from the deque 
my_deque.pop() 
my_deque.popleft() 

print(my_deque) 

# Output: deque([2, 3, 4])

Egy adott értéket a deque-ből is eltávolíthat a remove() függvénnyel. A függvény eltávolítja a deque-ből a megadott érték első előfordulását.

Íme egy példa:

import collections 

#Create a deque with some elements 
my_deque = collections.deque([1, 2, 1, 4, 5]) 

#Remove elements from the deque 
my_deque.remove(1)

print(my_deque) 

# Output: deque([2, 1, 4, 5])

Ha az elem nem található, a Python ValueError értéket ad vissza .

Minden elem eltávolítása a Deque-ből

A Deque összes elemének eltávolításához és üres állapotba való visszaállításához használhatjuk a clear() függvényt. Így működik:

from collections import deque 

#Create a deque with some elements 
my_deque = deque([1, 2, 1, 4, 5]) 

#Remove all elements from the deque 
my_deque.clear()

print(my_deque) 

# Output: 
deque([])

Hozzáférés a Deque elemeihez

A Python-deque elemeit a [] indexelő operátor segítségével érheti el . Az indexelési operátorban negatív értéket is használhat a deque elemek jobb oldali eléréséhez.

Az indexelés a bal szélső elemnél 0-tól, a jobb szélső elemnél -1-től kezdődik. Íme egy példa:

import collections 

# Create a deque with some elements 
my_deque = collections.deque([1, 2, 3, 4, 5]) 

# Access elements of the deque 
print(my_deque[0]) 
# Output: 1 

print(my_deque[-1]) 
# Output: 5 

A Deque elemeinek módosítása

A Python-deque elemeit a „ [] ” indexelő operátor és a „ = ” hozzárendelési operátor segítségével módosíthatja . Íme egy példa:

from collections import deque

# Create a deque with some elements 
my_deque = deque([1, 2, 3, 4, 5]) 
print(my_deque)

# Modify elements of the deque 
my_deque[0] = 10 
my_deque[-1] = 50 

print(my_deque) 

A fenti kódban az indexelő operátor a deque első és utolsó elemét 10-re, illetve 50-re módosítja.

Deque In Python – bemutató példákkal

Ezek azok az alapvető műveletek, amelyeket egy deque-objektum Pythonban végrehajthat. Ezekkel a műveletekkel hatékonyan implementálhat különféle adatstruktúrákat, például sorokat, veremeket és egyebeket.

Hogyan dolgozzunk egy deque-vel várólistaként

Használhat deque-t a Pythonban egy sor adatstruktúra megvalósításához. A várakozási sor egy absztrakt adattípus, amely FIFO (first in first out) alapon működik.

Ez azt jelenti, hogy a sor egyik végéről új elemeket fűzhet hozzá, a másik végéről pedig kinyomhatja a régi elemeket.

Jó módja annak, hogy ezt megmagyarázzuk, ha egy sor az üzletben van. Általában az elsőként érkező személy áll a sor élén, és először látják el.

Az újonnan érkezőknek a sor végére kell menniük, és ki kell várniuk a sorukat. Tehát az első beérkező lesz az első válaszoló, míg az utolsó beérkező lesz az utolsó válasz.

Az alábbiakban bemutatjuk, hogyan használhat deque-t a várólisták megvalósításához.

Az append() és popleft() metódusok használata

Ha egy deque-t sorként szeretne használni, az append() metódussal hozzáadhat elemeket a deque jobb végéhez. Ezenkívül a popleft() metódussal eltávolíthatja az elemeket a deque bal végéről.

Ez egy nagyon hatékony módja a várakozási sorok Pythonban való megvalósításának. Íme egy példa:

from collections import deque 

queue = deque() 
queue.append(1) 
queue.append(2) 
queue.append(3) 

print(queue) 
# Output: deque([1, 2, 3]) 

x = queue.popleft() 
print(x) 
# Output: 1 

print(queue) 
# Output: deque([2, 3]) 

Mint látható, az append() metódus a deque jobb végéhez ad hozzá elemeket, a popleft() metódus pedig eltávolítja a deque bal végéből.

Pontosan erre van szükségünk egy sor implementációban.

Annak ellenőrzése, hogy a deque Queue üres-e

Ha ellenőrizni szeretné, hogy egy deque üres-e, használja a not operátort. Íme egy példa:

from collections import deque 

queue = deque() 
if not queue: 
   print("Queue is empty") 
else: 
   print("Queue is not empty") 

Ez a „ Várólista üres ”, mert a deque üres. Ha elemeket ad hozzá a deque-hez, az többé nem lesz üres.

Összefoglalva, a deque-nek a Pythonban várólistaként való használata nagyon hatékony és könnyen megvalósítható.

Munka a Deque-vel, mint egy verem

Csakúgy, mint a várólisták, a veremek egy másik példája az absztrakt adattípusoknak, amelyeket az adatok rendszerezéséhez használhat. A várólistáktól eltérően a veremek LIFO (last in first out) módon működnek.

Ez azt jelenti, hogy a deque utolsó eleme lesz az első elem. A következőképpen valósíthatja meg ezt a mögöttes adatstruktúra használatával.

Az append() és pop() metódusok használata

Ha a Deque-t veremként használja, akkor az append() metódussal hozzáadhat elemeket a verem tetejére. Ez a módszer hozzáadja az elemet a deque jobb végéhez.

Hasonlóképpen eltávolíthat elemeket a verem tetejéről a pop() metódussal. Ez a módszer eltávolítja és visszaadja a deque jobb szélső elemét.

Tegyük fel például, hogy van egy „ my_stack ” nevű deque-je, és egy elemet szeretne hozzáadni a verem tetejéhez. A következő kódot használhatja:

 my_stack.append(5) 

Ez hozzáadja az 5-ös elemet a verem tetejéhez.

Ha el szeretné távolítani a legfelső elemet a veremből, használhatja a pop() metódust: `

bal = my_stack.pop() 

print(bal)
# Output: 5

Ezzel eltávolítja és visszaadja a deque jobb szélső elemét, amely ebben az esetben az 5.

Üres deque objektum keresése

A „ not ” logikai operátor segítségével ellenőrizheti, hogy egy deque verem üres-e . Ha a deque üres, a „ not my_deque ” True értéket ad vissza . Ellenkező esetben a False értéket adja vissza .

Tegyük fel például, hogy van egy „ my_deque ” nevű deque verem, és ellenőrizni szeretné, hogy üres-e. A következő kódot használhatja:

if not my_deque: 
   print("The deque is empty") 

else: 
   print("The deque is not empty") 

Ha a deque üres, akkor ez a következőt írja ki: „ A deque is üres”. Ha nem üres, a kimenet „ A deque is not empty ” lesz.

Amikor a Deque-vel dolgozik veremként, fontos nyomon követni, hogy a verem üres-e vagy sem. Ha egy üres veremből próbál kidobni egy elemet, IndexError üzenetet fog kapni .

Mi az a korlátozott deque?

A korlátozott visszaküldés egy kétvégű várólista, amely bizonyos korlátozásokkal rendelkezik az adathozzáfűzési és pop-műveletekre a deque mindkét végén. A korlátozott deque két fő típusa van; Korlátozott bemeneti deque és kimenet korlátozott deque

Nézzük őket:

Input Restricted Deque

A bevitelre korlátozott deque lehetővé teszi az adatelemek felbukkanását vagy törlését a deque mindkét végéről. Adatelemeket azonban csak a deque egyik végéről illeszthet be.

Ez nagyon hasznos a memóriakorlátokkal rendelkező alkalmazásokban. Használhatja adatelemek időrendi sorrendben történő hozzáadására, miközben megőrzi az adatok elvetését a deque bármely végéről.

Kimenet Korlátozott Deque

A kimenetre korlátozott visszaküldés lehetővé teszi adatok beszúrását a deque mindkét végéről. Az elemeket azonban csak a deque egyik végéből törölheti, amelyet kezelőfelületnek neveznek.

A kimenetre korlátozott deque nagyon hasznos azokban az esetekben, amikor FIFO adatstruktúrát kell megvalósítani, de továbbra is szeretné, hogy a funkcionalitás mindkét végről adatokat fűzzen hozzá.

Csomagoljuk be

Mostanra már jól ismernie kell a Python deque modulját, és azt, hogy hogyan használható hatékony várólisták és veremek megvalósítására.

A Deques egy sokoldalú adatstruktúra, amely számos előnnyel rendelkezik a hagyományos listákkal szemben. Ezek az előnyök nyilvánvalóak a memóriahatékony hozzáfűzés és pop műveletek során.

Akkor is nagyszerű választás, ha verem vagy kétvégű sor megvalósítására van szükség. A deque használatának néhány fő előnye:

  • Hatékony O(1) append és pop műveletek a deque mindkét végéről

  • Gyors O(1) hozzáférés a deque első és utolsó eleméhez

  • Beépített támogatás a menetbiztos, atomi műveletekhez

  • Rugalmas módszerek az elemek beillesztésére, eltávolítására és elforgatására

Összességében a deque modul egy hatékony eszköz, amely segíthet hatékonyabb és karbantarthatóbb Python-kód írásában. Akár egy kis forgatókönyvön, akár egy nagyszabású projekten dolgozik, a deque-eket mindenképpen érdemes megfontolni a hagyományos listák vagy egyéb adatstruktúrák alternatívájaként!

Készen áll, hogy többet megtudjon a Pythonról, tekintse meg az alábbi lejátszási listánkat


Arány- és gyakorisági táblázatok Excelben

Arány- és gyakorisági táblázatok Excelben

Az Excel gyakorisági táblázataiban, valamint az aránytáblázatokban készültek. Nos, nézze meg, mik ezek, és mikor kell használni őket.

A DAX Studio és a Tabular Editor telepítése a LuckyTemplates alkalmazásban

A DAX Studio és a Tabular Editor telepítése a LuckyTemplates alkalmazásban

Ismerje meg, hogyan töltheti le és telepítheti a DAX Studio és a Tabular Editor 3 alkalmazást, és hogyan konfigurálhatja őket a LuckyTemplates és az Excel programban való használatra.

LuckyTemplates alakzattérkép-vizualizáció a térbeli elemzéshez

LuckyTemplates alakzattérkép-vizualizáció a térbeli elemzéshez

Ez a blog tartalmazza a Shape Map vizualizációt a LuckyTemplates térbeli elemzéséhez. Megmutatom, hogyan használhatja hatékonyan ezt a vizualizációt annak funkcióival és elemeivel.

LuckyTemplates pénzügyi jelentések: az eredmények hozzárendelése a sablonokhoz minden egyes sorban

LuckyTemplates pénzügyi jelentések: az eredmények hozzárendelése a sablonokhoz minden egyes sorban

Ebben az oktatóanyagban egy egyedülálló ötletet mutatok be a pénzügyi jelentésekkel kapcsolatban, amely az eredmények hozzárendelését jelenti a LuckyTemplates-en belüli táblázatsablonok előre meghatározásához.

DAX-mértékek a LuckyTemplates-ben mértékelágazás használatával

DAX-mértékek a LuckyTemplates-ben mértékelágazás használatával

Hozzon létre DAX-mértékeket a LuckyTemplates alkalmazásban meglévő mértékek vagy képletek használatával. Ezt nevezem mértékelágazási technikának.

A legerősebb funkcióhívás a LuckyTemplatesben

A legerősebb funkcióhívás a LuckyTemplatesben

Ebben a blogban fedezze fel a LuckyTemplates adatkészletet, a leghatékonyabb függvényhívást, amely M- és DAX-függvények ezreit juttatja a keze ügyébe.

Adatmodellezési technikák a DAX-mérések megszervezéséhez

Adatmodellezési technikák a DAX-mérések megszervezéséhez

A mai oktatóanyagban megosztok néhány adatmodellezési technikát a DAX-mérések jobb rendszerezéséhez a hatékonyabb munkafolyamat érdekében.

LuckyTemplates pénzügyi irányítópult: Teljes táblázat testreszabási tippek

LuckyTemplates pénzügyi irányítópult: Teljes táblázat testreszabási tippek

A LuckyTemplates egy nagyszerű eszköz a pénzügyi jelentésekhez. Itt található egy oktatóanyag, amely bemutatja, hogyan hozhat létre személyre szabott táblázatokat a LuckyTemplates pénzügyi irányítópultjához.

A Power Query nyelvi folyamatának bevált gyakorlatai

A Power Query nyelvi folyamatának bevált gyakorlatai

Ez az oktatóanyag megvitatja a Power Query nyelvi folyamatot, és azt, hogyan segíthet zökkenőmentes és hatékony adatjelentések létrehozásában.

LuckyTemplates egyéni ikonok | PBI vizualizációs technika

LuckyTemplates egyéni ikonok | PBI vizualizációs technika

Az egyik kedvenc technikámról fogok beszélni a LuckyTemplates egyéni ikonok körül, amely dinamikusan használja az egyéni ikonokat a LuckyTemplates vizualizációkban.