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:
Pythonfrom collections import deque # Declaring deque de = deque(['name''age''DOB']) print(de)
Çıkış
deque(['name' 'age' 'DOB'])

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:
sınıf ve nesne javası
| Operasyon | Tanım | Zaman Karmaşıklığı |
|---|---|---|
| ekle(x) | eklerxdeque'nin sağ ucuna. | Ç(1) |
| sol ek(x) | eklerxdeque'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 ekleriterabledeque'nin sağ ucuna. | Peki) |
| sola uzat(yinelenebilir) | Tüm öğeleri ekleriterabledeque'nin sol ucuna (ters sıra). | Peki) |
| kaldır(değer) | İlk oluşumunu kaldırırvaluedeque'den. YükseltirValueErroreğer bulunamadıysa. | Açık) |
| döndür(n) | Deque'yi döndürürnsağa doğru adımlar. Eğernnegatif ise sola döner. | Peki) |
| temizlemek() | Deque'deki tüm öğeleri kaldırır. | Açık) |
| say(değer) | Oluşma sayısını sayarvaluedeque'de. | Açık) |
| indeks(değer) | İlk oluşumunun dizinini döndürürvaluedeque'de. YükseltirValueErroreğ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.
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.
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.
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])