deque
- Python kursu
- Orta seviye
- Ders 91/116
- 5 dk
deque ile çift üçlü kuyruğu öğrenirsin.
deque
deque (çift üçlü kuyruk), hem başından hem sonundan hızlı ekleme ve çıkarma yapılabilen bir veri yapısıdır. collections modülünden gelir; listeden farklı olarak baştan ekleme/çıkarma işlemi O(1) sürede çalışır.
Örnek: d = deque([1, 2, 3]). d.appendleft(0) ile başa, d.append(4) ile sona eklersin. d.popleft() başdan, d.pop() sondan çıkarır. Listeyle aynı işlem O(n) sürer; deque bu yüzden kuyruk işlerinde tercih edilir.
Listeden farkı
Bir listede insert(0, x) ya da pop(0) çağrısı tüm öğeleri kaydırır; bu yüzden O(n) sürede çalışır. deque ise çift bağlı liste yapısıyla bu işlemleri O(1) sürede yapar.
Kuyruk (FIFO) ya da yığın (LIFO) uygulamalarında deque performans açısından listeye göre çok daha verimlidir. maxlen argümanı verirsen, deque belirli bir uzunluğu aşınca eski öğeleri otomatik atar; bu da kayan pencere (sliding window) işlerinde kullanışlıdır.
Uygulama deque başa ekle
from collections import deque ile başla. d = deque([1, 2, 3]) ile bir deque oluştur. d.appendleft(0) ile başa 0 ekle. Sonra print(list(d)) ile deque'yi liste olarak yazdır.
Başlangıç kodu
# deque başa 0 ekleÖrnek çözüm
# deque başa 0 ekle
from collections import deque
d = deque([1, 2, 3])
d.appendleft(0)
print(list(d))Beklenen çıktı
[0, 1, 2, 3]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 deque metotlarını eşleştir
| Kavram | Anlamı |
|---|---|
append |
Sona ekler |
appendleft |
Başa ekler |
pop |
Sondan çıkarır |
popleft |
Baştan çıkarır |
2 deque'de appendleft ne zaman tercih edilir?
- Baştan hızlı ekleme gerektiğinde Doğru cevap
- Yalnızca sondan çıkarmada
- Yalnızca arama işlemlerinde
- Sadece sıralı erişimde
Açıklama: appendleft başa O(1) sürede ekler; listeyle zor olur.
3 appendleft çağrısı
from collections import deque
d = deque([1, 2, 3])
d.____(0)
print(list(d))
from collections import deque
d = deque([1, 2, 3])
d.appendleft(0)
print(list(d))
Açıklama: appendleft başa 0 ekler.