En in Python

En in Python

Een deque staat voor Double Ended Queue. Het is een speciaal type datastructuur waarmee u efficiënt elementen van beide kanten kunt toevoegen en verwijderen.

In tegenstelling tot normale wachtrijen (die meestal volgen op First In First Out) ondersteunt een deque zowel FIFO- als LIFO-bewerkingen. Dit maakt het zeer flexibel en nuttig in toepassingen in de echte wereld, zoals schuifvensterproblemen bij het plannen van taken en realtime gegevensverwerking.

Voorbeeld:

Python
   from   collections   import   deque   # Declaring deque    de   =   deque  ([  'name'    'age'    'DOB'  ])   print  (  de  )   

Uitvoer
deque(['name' 'age' 'DOB'])  
Daarom

Waarom hebben we deque nodig

  • Het ondersteunt O(1) tijd voor het toevoegen/verwijderen van elementen aan beide kanten.
  • Het is efficiënter dan lijsten voor front-endbewerkingen.
  • Het kan zowel als wachtrij (FIFO) als als stapel (LIFO) functioneren.
  • Ideaal voor het plannen van schuifraamproblemen en realtime gegevensverwerking.
  • Het biedt krachtige ingebouwde methoden zoals links toevoegen() popleft() En draaien().

Soorten beperkte Deque-invoer

  • Invoer beperkte ontvr :  Invoer is aan één kant beperkt, terwijl verwijdering aan beide kanten is toegestaan.
  • Uitvoer beperkte ontvr : de uitvoer is aan één kant beperkt, maar invoegen is aan beide kanten toegestaan.

Operaties op deque 

Hier is een tabel met ingebouwde bewerkingen van een deque in Python met beschrijvingen en de bijbehorende tijdcomplexiteit:

Operatie Beschrijving Tijdcomplexiteit
toevoegen(x) Voegt toe x aan de rechterkant van de deque. O(1)
links toevoegen(x) Voegt toe x aan de linkerkant van de deque. O(1)
knal() Verwijdert en retourneert een element aan de rechterkant van de deque. O(1)
popleft() Verwijdert en retourneert een element aan de linkerkant van de deque. O(1)
uitbreiden (itereerbaar) Voegt alle elementen toe van iterable aan de rechterkant van de deque. Akkoord)
extendleft(itereerbaar) Voegt alle elementen toe van iterable naar het linkeruiteinde van de deque (omgekeerde volgorde). Akkoord)
verwijder(waarde) Verwijdert het eerste exemplaar van value van de deque. Verhoogt ValueError indien niet gevonden. Op)
roteren(n) Roteert de deque n stappen naar rechts. Als n is negatief, draait naar links. Akkoord)
duidelijk() Verwijdert alle elementen uit de deque. Op)
aantal(waarde) Telt het aantal voorkomens van value in de deque. Op)
index(waarde) Retourneert de index van het eerste exemplaar van value in de deque. Verhoogt ValueError indien niet gevonden. Op)
achteruit() Keert de elementen van de deque op hun plaats om. Op)

Uit de wachtrij geplaatste items toevoegen en verwijderen

  • toevoegen(x): Voegt x toe aan het rechteruiteinde van de deque.
  • links toevoegen(x): Voegt x toe aan het linkeruiteinde van de deque.
  • uitbreiden (itereerbaar): Voegt alle elementen toe, van de iterabele tot de rechterkant.
  • extendleft(itereerbaar): Voegt alle elementen toe, van de iterabele tot de linkerkant (in omgekeerde volgorde).
  • verwijder(waarde): Verwijdert de eerste keer dat de opgegeven waarde voorkomt uit de deque. Als er geen waarde wordt gevonden, wordt er een ValueError gegenereerd.
  • knal(): Verwijdert en retourneert een element aan de rechterkant.
  • poplinks(): Verwijdert en retourneert een element van het linkeruiteinde.
  • duidelijk(): Verwijdert alle elementen uit de deque.
Python
   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  )   

Uitgang:

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

Toegang tot item en lengte van deque

  • Indexering: Krijg toegang tot elementen per positie met behulp van positieve of negatieve indexen.
  • alleen(): Retourneert het aantal elementen in de deque.
Python
   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  ))   

Uitvoer
1 4 7  

Tel rotatie en omkering van een deque

  • aantal(waarde): Deze methode telt het aantal keren dat een specifiek element in de deque voorkomt.
  • roteren(n): Deze methode roteert de deque met n stappen. Positieve n draait naar rechts en negatieve n draait naar links.
  • achteruit(): Deze methode keert de volgorde van de elementen in de deque om.
Python
   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  )   

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

Dit Vind Je Misschien Leuk