Python'da Collections Modülündeki deque Sınıfı
Python'da collections modülündeki deque sınıfı, çift uçlu kuyruk (double-ended queue) veri yapısını etkili bir şekilde uygulamanıza olanak tanır.
Deque Nedir?
Deque (Double-Ended Queue), her iki ucundan da ekleme ve çıkarma işlemlerinin yapılabildiği bir veri yapısıdır. Bu, deque'nin hem yığıt (stack) hem de kuyruk (queue) olarak kullanılmasına olanak tanır.
Python'da Deque Kullanımı
collections modülünden deque'yi içe aktararak başlayabilirsiniz:
from collections import deque
Bir deque oluşturmak için, isteğe bağlı olarak başlangıç elemanları içeren bir yineleyici (örneğin bir liste) ve isteğe bağlı bir maxlen parametresi sağlayabilirsiniz. Bu maxlen parametresi, deque'nin kapasitesini sınırlar, böylece belirli bir boyutu aştığında otomatik olarak taşmaları önler.
d = deque([1, 2, 3], maxlen=5)
Temel Metotlar
Append: Sağ tarafa bir öğe ekler.
d.append(4) # d = deque([1, 2, 3, 4], maxlen=5)
Append Left: Sol tarafa bir öğe ekler.
d.appendleft(0) # d = deque([0, 1, 2, 3, 4], maxlen=5)
Pop: Sağ taraftan bir öğe çıkarır.
d.pop() # d = deque([0, 1, 2, 3], maxlen=5)
Pop Left: Sol taraftan bir öğe çıkarır.
d.popleft() # d = deque([1, 2, 3], maxlen=5)
Rotate: Elemanları sağa veya sola kaydırır.
d.rotate(1) # d = deque([3, 1, 2], maxlen=5) d.rotate(-1) # d = deque([1, 2, 3], maxlen=5)
Extend: Sağ tarafa birden çok öğe ekler.
d.extend([4, 5]) # d = deque([1, 2, 3, 4, 5], maxlen=5)
Extend Left: Sol tarafa birden çok öğe ekler.
d.extendleft([0, -1]) # d = deque([-1, 0, 1, 2, 3], maxlen=5)
Clear: Tüm öğeleri deque'den kaldırır.
d.clear() # d = deque([], maxlen=5)
Avantajlar
Hızlı ve etkili: Her iki ucundan da ekleme ve çıkarma işlemleri O(1) zaman karmaşıklığına sahiptir.
Esnek: Yığıt veya kuyruk gibi farklı veri yapıları olarak kullanılabilir.
Dezavantajlar
Eğer maxlen parametresi belirlenmemişse, bellek kullanımı kontrolden çıkabilir.
Python'daki collections modülündeki deque, hem yığıt hem de kuyruk yapısının birleşimini sunan güçlü ve esnek bir veri yapısıdır. Her iki uçtan da hızlı erişim sunar ve farklı senaryolara uygun olarak özelleştirilebilir.
0 Comments
Recommended Comments
There are no comments to display.