logo

In v Pythonu

Deque (Doubly Ended Queue) v Pythonu je implementiran z uporabo modula zbirke . Deque ima prednost pred seznamom v primerih, ko potrebujemo hitrejše operacije dodajanja in izpiranja z obeh koncev vsebnika, saj deque zagotavlja O(1) časovna zapletenost za operacije dodajanja in izpiranja v primerjavi s seznamom, ki zagotavlja O(n) časovno zapletenost.

Vrste omejenega vnosa deque

    Input Restricted Deque : Vnos je omejen na enem koncu, medtem ko je brisanje dovoljeno na obeh koncih. Output Restricted Deque: izhod je omejen na enem koncu, vstavljanje pa je dovoljeno na obeh koncih.

Primer: koda Python za predstavitev

Python3








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



>

>

Izhod

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

Operacije na deque

Primer 1: Učinkovito dodajanje elementov

    append() :- Ta funkcija se uporablja za vstavljanje vrednosti v njen argument na desni konec deque. appendleft() :- Ta funkcija se uporablja za vstavljanje vrednosti v njen argument na levi konec deque.

Python3


vrzi obravnavanje izjem v Javi



# 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)>

>

>

Izhod

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])>

Napotite se na konec za analizo kompleksnosti.

Primer 2: Učinkovito pokanje predmetov

    pop() :- Ta funkcija se uporablja za brisanje argumenta z desnega konca deque. popleft() :- Ta funkcija se uporablja za brisanje argumenta z levega 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)>

>

>

Izhod

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])>

Napotite se na konec za analizo kompleksnosti.

Primer 3: Dostopanje do elementov v deque

    index(ele, beg, end) :- Ta funkcija vrne prvi indeks vrednosti, omenjene v argumentih, z začetkom iskanja od začetnega do končnega indeksa. vstavi (i, a) :- Ta funkcija vstavi vrednost, omenjeno v argumentih (a), v indeks (i), podanem v argumentih. remove() :- Ta funkcija odstrani prvo pojavitev vrednosti, omenjene v argumentih. count() :- Ta funkcija prešteje število pojavitev vrednosti, omenjene v argumentih.

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)>

>

>

Izhod

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])>

Napotite se na konec za analizo kompleksnosti.

Primer 4: Velikost deque

    len(dequeue) :- Vrne trenutno velikost 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>

>

>

Izhod

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>

Napotite se na konec za analizo kompleksnosti.

Primer 5: Sprednja in zadnja stran deke

    Deque[0] : - Do sprednjega elementa deque lahko dostopamo z uporabo indeksiranja z de[0]. Deque[-1] :- Do zadnjega elementa deque lahko dostopamo z uporabo indeksiranja z de[-1].

Python3




# 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>

>

>

Izhod

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

Napotite se na konec za analizo kompleksnosti.

Primer 6: Različne operacije na deque

    extend(iterable) :- Ta funkcija se uporablja za dodajanje več vrednosti na desni konec deque. Podan argument je ponovljiv. extendleft(iterable) :- Ta funkcija se uporablja za dodajanje več vrednosti na levi konec deque. Podan argument je ponovljiv. Vrstni red je obrnjen zaradi levih dodatkov. reverse() :- Ta funkcija se uporablja za obračanje vrstnega reda elementov deque. rotate() :- Ta funkcija zavrti deque za število, podano v argumentih. Če je navedeno število negativno, pride do rotacije v levo. Drugače je vrtenje v desno.

Python3




# 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)>

>

>

Izhod

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])>

Napotite se na konec za analizo kompleksnosti.

Analiza kompleksnosti:

Metode

Časovna zapletenost

Pomožni prostor

pripni()

O(1)

O(1)

pripni levo()

O(1)

O(1)

pop()

O(1)

O(1)

popleft()

O(1)

O(1)

indeks(ele, začetek, konec)

O(N)

O(1)

vstavi (i, a)

O(N)

O(1)

Odstrani()

O(N)

O(1)

štetje ()

O(N)

O(1)

samo (iz vrste)

O(1)

O(1)

Deque[0]

O(1)

O(1)

Deque[-1]

O(1)

O(1)

podaljšati (iterable)

PUŠČICA)

O(1)

podaljšano levo (ponovljivo)

PUŠČICA)

O(1)

obratno()

O(N)

O(1)

niz v c

vrti()

PUŠČICA)

O(1)