logo

A v Pythone

Deque (Double Ended Queue) v Pythone je implementovaný pomocou modulu zbierky . Deque je uprednostňovaný pred zoznamom v prípadoch, keď potrebujeme rýchlejšie operácie pripojenia a pop z oboch koncov kontajnera, pretože deque poskytuje O(1) časová zložitosť pre operácie pripojenia a pop v porovnaní so zoznamom, ktorý poskytuje časovú zložitosť O(n).

Typy obmedzeného vstupu Deque

    Input Restricted Deque : Vstup je obmedzený na jednom konci, zatiaľ čo vymazanie je povolené na oboch koncoch. Output Restricted Deque : výstup je obmedzený na jednom konci, ale vkladanie je povolené na oboch koncoch.

Príklad: Python kód na demonštráciu

Python3








from> collections>import> deque> > # Declaring deque> queue>=> deque([>'name'>,>'age'>,>'DOB'>])> > print>(queue)>

rr algoritmus



>

>

Výkon

deque(['name', 'age', 'DOB'])>

Operácie na deque

Príklad 1: Efektívne pripojenie položiek

    append() :- Táto funkcia sa používa na vloženie hodnoty do jej argumentu na pravý koniec deque. appendleft() :- Táto funkcia sa používa na vloženie hodnoty do jej argumentu na ľavý koniec deque.

Python3




# importing 'collections' for deque operations> import> collections> # initializing deque> de>=> collections.deque([>1>,>2>,>3>])> print>(>'deque: '>, de)> # using append() to insert element at right end> # inserts 4 at the end of deque> de.append(>4>)> # printing modified deque> print>(>' The deque after appending at right is : '>)> print>(de)> # using appendleft() to insert element at left end> # inserts 6 at the beginning of deque> de.appendleft(>6>)> # printing modified deque> print>(>' The deque after appending at left is : '>)> print>(de)>

>

>

Výkon

deque: deque([1, 2, 3]) The deque after appending at right is : deque([1, 2, 3, 4]) The deque after appending at left is : deque([6, 1, 2, 3, 4])>

Pozrite si koniec pre analýzu zložitosti.

Príklad 2: Efektívne vyskakovanie položiek

    pop() :- Táto funkcia sa používa na odstránenie argumentu z pravého konca deque. popleft() :- Táto funkcia sa používa na odstránenie argumentu z ľavého konca deque.

Python3




# importing 'collections' for deque operations> import> collections> # initializing deque> de>=> collections.deque([>6>,>1>,>2>,>3>,>4>])> print>(>'deque: '>, de)> # using pop() to delete element from right end> # deletes 4 from the right end of deque> de.pop()> # printing modified deque> print>(>' The deque after deleting from right is : '>)> print>(de)> # using popleft() to delete element from left end> # deletes 6 from the left end of deque> de.popleft()> # printing modified deque> print>(>' The deque after deleting from left is : '>)> print>(de)>

>

>

Výkon

deque: deque([6, 1, 2, 3, 4]) The deque after deleting from right is : deque([6, 1, 2, 3]) The deque after deleting from left is : deque([1, 2, 3])>

Pozrite si koniec pre analýzu zložitosti.

Príklad 3: Prístup k položkám v deque

    index(ele, beg, end) :- Táto funkcia vráti prvý index hodnoty uvedenej v argumentoch, pričom začne hľadať od začiatku do konca indexu. insert(i, a) :- Táto funkcia vloží hodnotu uvedenú v argumentoch(a) do indexu(i) špecifikovaného v argumentoch. remove() :- Táto funkcia odstráni prvý výskyt hodnoty uvedenej v argumentoch. count() :- Táto funkcia počíta počet výskytov hodnoty uvedenej v argumentoch.

Python3




# Python code to demonstrate working of> # insert(), index(), remove(), count()> # importing 'collections' for deque operations> import> collections> # initializing deque> de>=> collections.deque([>1>,>2>,>3>,>3>,>4>,>2>,>4>])> # using index() to print the first occurrence of 4> print> (>'The number 4 first occurs at a position : '>)> print> (de.index(>4>,>2>,>5>))> # using insert() to insert the value 3 at 5th position> de.insert(>4>,>3>)> # printing modified deque> print> (>'The deque after inserting 3 at 5th position is : '>)> print> (de)> # using count() to count the occurrences of 3> print> (>'The count of 3 in deque is : '>)> print> (de.count(>3>))> # using remove() to remove the first occurrence of 3> de.remove(>3>)> # printing modified deque> print> (>'The deque after deleting first occurrence of 3 is : '>)> print> (de)>

>

>

Výkon

The number 4 first occurs at a position : 4 The deque after inserting 3 at 5th position is : deque([1, 2, 3, 3, 3, 4, 2, 4]) The count of 3 in deque is : 3 The deque after deleting first occurrence of 3 is : deque([1, 2, 3, 3, 4, 2, 4])>

Pozrite si koniec pre analýzu zložitosti.

Príklad 4: Veľkosť deque

    len(dequeue) :- Vráti aktuálnu veľkosť dequeue.

Python3




# Python Program to demonstrate> # how to find size of a Dequeue> from> collections>import> deque> # initializing deque> de>=> deque([>1>,>2>,>3>,>4>,>5>,>6>])> print>(>'Current Deque: '>, de)> # printing current size of deque> print>(f>'Size of Deque: {len(de)}'>)> # using pop() to delete element from right end> # deletes 6 from the right end of deque> de.pop()> # printing modified deque> print>(>' The deque after deleting from right is: '>, end>=> '')> print>(de)> # printing current size of deque> print>(f>'Size of Deque: {len(de)}'>)> # This code is contributed by Susobhan Akhuli>

>

>

Výkon

Current Deque: deque([1, 2, 3, 4, 5, 6]) Size of Deque: 6 The deque after deleting from right is: deque([1, 2, 3, 4, 5]) Size of Deque: 5>

Pozrite si koniec pre analýzu zložitosti.

Príklad 5: Predná a zadná strana deque

    Deque[0] :- K prednému prvku deque môžeme pristupovať pomocou indexovania pomocou de[0]. Deque[-1] :- K zadnému prvku deque môžeme pristupovať pomocou indexovania pomocou de[-1].

Python3


počítať odlišné sql



# Python Program to demonstrate> # accessing the front and back of a Deque> from> collections>import> deque> # initializing deque> de>=> deque([>1>,>2>,>3>,>4>,>5>,>6>])> print>(>'Current Deque: '>, de)> # Accessing the front element of the deque> print>(>'Front element of the deque:'>, de[>0>])> # Accessing the back element of the deque> print>(>'Back element of the deque:'>, de[>->1>])> # This code is contributed by Susobhan Akhuli>

>

>

Výkon

Current Deque: deque([1, 2, 3, 4, 5, 6]) Front element of the deque: 1 Back element of the deque: 6>

Pozrite si koniec pre analýzu zložitosti.

Príklad 6: Rôzne operácie na deque

    extend(iterable) :- Táto funkcia sa používa na pridanie viacerých hodnôt na pravý koniec deque. Odovzdaný argument je opakovateľný. extendleft(iterable) :- Táto funkcia sa používa na pridanie viacerých hodnôt na ľavý koniec deque. Odovzdaný argument je opakovateľný. Poradie je obrátené v dôsledku ľavého pridania. reverse() :- Táto funkcia sa používa na obrátenie poradia prvkov deque. rotation() :- Táto funkcia otočí deque o číslo zadané v argumentoch. Ak je zadané číslo záporné, rotácia nastane doľava. Inak je rotácia doprava.

Python3




výška odsadenia
# Python code to demonstrate working of> # extend(), extendleft(), rotate(), reverse()> # importing 'collections' for deque operations> import> collections> # initializing deque> de>=> collections.deque([>1>,>2>,>3>,])> # using extend() to add numbers to right end> # adds 4,5,6 to right end> de.extend([>4>,>5>,>6>])> # printing modified deque> print> (>'The deque after extending deque at end is : '>)> print> (de)> # using extendleft() to add numbers to left end> # adds 7,8,9 to left end> de.extendleft([>7>,>8>,>9>])> # printing modified deque> print> (>'The deque after extending deque at beginning is : '>)> print> (de)> # using rotate() to rotate the deque> # rotates by 3 to left> de.rotate(>->3>)> # printing modified deque> print> (>'The deque after rotating deque is : '>)> print> (de)> # using reverse() to reverse the deque> de.reverse()> # printing modified deque> print> (>'The deque after reversing deque is : '>)> print> (de)>

>

>

Výkon

The deque after extending deque at end is : deque([1, 2, 3, 4, 5, 6]) The deque after extending deque at beginning is : deque([9, 8, 7, 1, 2, 3, 4, 5, 6]) The deque after rotating deque is : deque([1, 2, 3, 4, 5, 6, 9, 8, 7]) The deque after reversing deque is : deque([7, 8, 9, 6, 5, 4, 3, 2, 1])>

Pozrite si koniec pre analýzu zložitosti.

Analýza zložitosti:

Metódy

Časová zložitosť

Pomocný priestor

pripojiť ()

O(1)

O(1)

appendleft()

O(1)

O(1)

pop()

O(1)

O(1)

popleft()

O(1)

O(1)

index (prvok, začiatok, koniec)

O(N)

O(1)

vložiť (i, a)

O(N)

O(1)

odstrániť ()

O(N)

O(1)

počítať ()

O(N)

O(1)

len(dequeue)

O(1)

O(1)

Deque[0]

O(1)

O(1)

Deque[-1]

O(1)

O(1)

predĺžiť (opakovateľné)

ŠÍPKA)

reťazec previesť na int v jazyku Java

O(1)

predĺžiť vľavo (opakovateľné)

ŠÍPKA)

O(1)

obrátiť ()

O(N)

O(1)

točiť sa()

ŠÍPKA)

O(1)