Și în Python
Un deque înseamnă coadă dublă. Este un tip special de structură de date care vă permite să adăugați și să eliminați elemente de la ambele capete în mod eficient.
Spre deosebire de cozile normale (care urmează de obicei First In First Out) o deque acceptă atât operațiunile FIFO, cât și LIFO. Acest lucru îl face foarte flexibil și util în aplicațiile din lumea reală, cum ar fi programarea sarcinilor, problemele ferestrelor glisante și procesarea datelor în timp real.
Exemplu:
Python from collections import deque # Declaring deque de = deque ([ 'name' 'age' 'DOB' ]) print ( de )
Ieșire
deque(['name' 'age' 'DOB'])
De ce avem nevoie de deque
- Acceptă timpul O(1) pentru adăugarea/eliminarea elementelor de la ambele capete.
- Este mai eficient decât listele pentru operațiunile front-end.
- Poate funcționa atât ca coadă (FIFO) cât și ca stivă (LIFO).
- Ideal pentru programarea problemelor ferestrelor glisante și procesarea datelor în timp real.
- Oferă metode puternice încorporate, cum ar fi appendleft() popleft() şi roti().
Tipuri de intrare Deque restricționată
- Intrare restricționată Deque : Introducerea este limitată la un capăt, în timp ce ștergerea este permisă la ambele capete.
- Ieșire restricționată Deque : ieșirea este limitată la un capăt, dar inserarea este permisă la ambele capete.
Operațiuni pe deque
Iată un tabel care listează operațiunile încorporate ale unui deque în Python cu descrieri și complexitățile de timp corespunzătoare:
| Operațiunea | Descriere | Complexitatea timpului |
|---|---|---|
| adaugă (x) | Adaugă x la capătul drept al dequei. | O(1) |
| appendleft(x) | Adaugă x la capătul stâng al dequei. | O(1) |
| pop() | Îndepărtează și returnează un element din capătul din dreapta al dequei. | O(1) |
| popleft() | Îndepărtează și returnează un element din capătul din stânga al decului. | O(1) |
| extinde (iterabil) | Adaugă toate elementele de la iterable la capătul drept al dequei. | bine) |
| extinde stânga (iterabil) | Adaugă toate elementele de la iterable la capătul din stânga deque (ordine inversă). | bine) |
| elimina (valoare) | Elimină prima apariție a value din deque. Creșteri ValueError dacă nu este găsit. | Pe) |
| roteste(n) | Rotește deque-ul n pași spre dreapta. Dacă n este negativ se rotește spre stânga. | bine) |
| clar() | Îndepărtează toate elementele din deque. | Pe) |
| număr (valoare) | Contorizează numărul de apariții ale value în deque. | Pe) |
| index(valoare) | Returnează indexul primei apariții a lui value în deque. Creșteri ValueError dacă nu este găsit. | Pe) |
| verso() | Inversează elementele dequei la locul lor. | Pe) |
Adăugarea și ștergerea elementelor din coadă
- anexează(x): Adaugă x la capătul din dreapta al decului.
- appendleft(x): Adaugă x la capătul din stânga deque.
- extinde (iterabil): Adaugă toate elementele de la iterabil la capătul drept.
- extinde stânga (iterabil): Adaugă toate elementele de la iterabil la capătul din stânga (în ordine inversă).
- elimina (valoare): Îndepărtează prima apariție a valorii specificate din deque. Dacă valoarea nu este găsită, se afișează o valoare ValueError.
- pop(): Îndepărtează și returnează un element din capătul din dreapta.
- popleft(): Îndepărtează și returnează un element din capătul din stânga.
- clar(): Îndepărtează toate elementele din deque.
from collections import deque dq = deque ([ 10 20 30 ]) # Add elements to the right dq . append ( 40 ) # Add elements to the left dq . appendleft ( 5 ) # extend(iterable) dq . extend ([ 50 60 70 ]) print ( 'After extend([50 60 70]):' dq ) # extendleft(iterable) dq . extendleft ([ 0 5 ]) print ( 'After extendleft([0 5]):' dq ) # remove method dq . remove ( 20 ) print ( 'After remove(20):' dq ) # Remove elements from the right dq . pop () # Remove elements from the left dq . popleft () print ( 'After pop and popleft:' dq ) # clear() - Removes all elements from the deque dq . clear () # deque: [] print ( 'After clear():' dq )
Ieșire:
After extend([50 60 70]): deque([5 10 20 30 40 50 60 70])
After extendleft([0 5]): deque([5 0 5 10 20 30 40 50 60 70])
After remove(20): deque([5 0 5 10 30 40 50 60 70])
After pop and popleft: deque([0 5 10 30 40 50 60])
After clear(): deque([])Accesarea articolului și lungimea dequei
- Indexare: Accesați elemente după poziție folosind indici pozitivi sau negativi.
- numai(): Returnează numărul de elemente din deque.
import collections dq = collections . deque ([ 1 2 3 3 4 2 4 ]) # Accessing elements by index print ( dq [ 0 ]) print ( dq [ - 1 ]) # Finding the length of the deque print ( len ( dq ))
Ieșire
1 4 7
Rotația numărului și inversarea unui deque
- număr (valoare): Această metodă numără numărul de apariții ale unui anumit element din deque.
- rotiți(n): Această metodă rotește deque-ul cu n pași. N pozitiv se rotește la dreapta și negativul n se rotește la stânga.
- verso(): Această metodă inversează ordinea elementelor din deque.
from collections import deque # Create a deque dq = deque ([ 10 20 30 40 50 20 30 20 ]) # 1. Counting occurrences of a value print ( dq . count ( 20 )) # Occurrences of 20 print ( dq . count ( 30 )) # Occurrences of 30 # 2. Rotating the deque dq . rotate ( 2 ) # Rotate the deque 2 steps to the right print ( dq ) dq . rotate ( - 3 ) # Rotate the deque 3 steps to the left print ( dq ) # 3. Reversing the deque dq . reverse () # Reverse the deque print ( dq )
Ieșire
3 2 deque([30 20 10 20 30 40 50 20]) deque([20 30 40 50 20 30 20 10]) deque([10 20 30 20 50 40 30 20])