Ve Python'da

Ve Python'da

Deque, Çift Uçlu Kuyruk anlamına gelir. Her iki uçtan da öğeleri verimli bir şekilde ekleyip çıkarmanıza olanak tanıyan özel bir veri yapısı türüdür.

Normal kuyrukların (genellikle İlk Giren İlk Çıkar'ı takip eden) aksine, bir deque hem FIFO hem de LIFO işlemlerini destekler. Bu, onu görev zamanlama kayan pencere sorunları ve gerçek zamanlı veri işleme gibi gerçek dünya uygulamalarında çok esnek ve kullanışlı kılar.

Örnek:

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

Çıkış
deque(['name' 'age' 'DOB'])  
Öyleyse

Neden Deque'e İhtiyacımız Var?

  • Her iki uçtan eleman eklemek/çıkarmak için O(1) süresini destekler.
  • Ön uç işlemler için listelerden daha verimlidir.
  • Hem kuyruk (FIFO) hem de yığın (LIFO) olarak işlev görebilir.
  • Kayan pencere problemlerini planlamak ve gerçek zamanlı veri işlemek için idealdir.
  • Gibi güçlü yerleşik yöntemler sunar soldaki() sol pop() Ve döndürün().

Kısıtlı Deque Giriş Türleri

  • Giriş Kısıtlı Deque :  Giriş bir uçta sınırlıdır, ancak her iki uçta da silme işlemine izin verilir.
  • Çıkış Kısıtlı Deque : çıkış bir uçta sınırlıdır ancak her iki uçta da eklemeye izin verilir.

Deque ile ilgili işlemler 

Python'da bir deque'nin yerleşik işlemlerini açıklamalarla ve bunlara karşılık gelen zaman karmaşıklıklarıyla birlikte listeleyen bir tablo:

Operasyon Tanım Zaman Karmaşıklığı
ekle(x) ekler x deque'nin sağ ucuna. Ç(1)
sol ek(x) ekler x deque'nin sol ucuna. Ç(1)
pop() Deque'nin sağ ucundaki bir öğeyi kaldırır ve döndürür. Ç(1)
sol pop() Deque'nin sol ucundaki bir öğeyi kaldırır ve döndürür. Ç(1)
genişlet (yinelenebilir) Tüm öğeleri ekler iterable deque'nin sağ ucuna. Peki)
sola uzat(yinelenebilir) Tüm öğeleri ekler iterable deque'nin sol ucuna (ters sıra). Peki)
kaldır(değer) İlk oluşumunu kaldırır value deque'den. Yükseltir ValueError eğer bulunamadıysa. Açık)
döndür(n) Deque'yi döndürür n sağa doğru adımlar. Eğer n negatif ise sola döner. Peki)
temizlemek() Deque'deki tüm öğeleri kaldırır. Açık)
say(değer) Oluşma sayısını sayar value deque'de. Açık)
indeks(değer) İlk oluşumunun dizinini döndürür value deque'de. Yükseltir ValueError eğer bulunamadıysa. Açık)
tersi() Deque öğelerini yerinde tersine çevirir. Açık)

Kuyruktan Çıkarma Öğelerini Ekleme ve Silme

  • ekle(x): Deque'nin sağ ucuna x eklenir.
  • sol ek(x): Deque'nin sol ucuna x ekler.
  • genişlet(yinelenebilir): Yinelenebilir olandan sağ uca kadar tüm öğeleri ekler.
  • extendleft(yinelenebilir): Yinelenebilir olandan sol uca kadar tüm öğeleri (ters sırada) ekler.
  • kaldır(değer): Belirtilen değerin ilk oluşumunu deque'den kaldırır. Değer bulunamazsa ValueError değerini yükseltir.
  • pop(): Sağ uçtan bir öğeyi kaldırır ve döndürür.
  • sol pop(): Sol uçtan bir öğeyi kaldırır ve döndürür.
  • temizlemek(): Deque'deki tüm öğeleri kaldırır.
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  )   

Çıkış:

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

Öğeye erişim ve deque uzunluğu

  • İndeksleme: Pozitif veya negatif endeksleri kullanarak öğelere konuma göre erişin.
  • sadece(): Deque'deki öğelerin sayısını döndürür.
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  ))   

Çıkış
1 4 7  

Bir deque'in Döndürülmesini ve Tersine Dönmesini Sayma

  • sayım(değer): Bu yöntem, belirli bir öğenin deque'deki oluşum sayısını sayar.
  • döndür(n): Bu yöntem deque'yi n adım döndürür. Pozitif n sağa, negatif n ise sola döner.
  • tersi(): Bu yöntem, deque'deki öğelerin sırasını tersine çevirir.
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  )   

Çıkış
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])