
Python'da liste (list), sözlük (dict) ve set (set) en sık kullanılan temel veri yapılarıdır. Her biri farklı özellikler sunar: listeler sıralıdır ve öğeler tekrar edilebilir; sözlükler anahtar-değer eşlemesi sağlar ve hızlı erişim amaçlıdır; setler ise benzersiz öğeler ve küme işlemleri için uygundur. Resmi dokümantasyon bu yapıların davranışlarını detaylandırır ve örnekler sunar (Python Veri Yapıları).
Listeler sıra bilgisi ve indeksleme gerektiren durumlar için uygundur. Sık kullanılan işlemler append, extend, insert, remove, pop, sort ve dilimlemedir.
# liste oluşturma nums = [1, 2, 3] nums.append(4) print(nums[0]) # 1 print(nums[1:3]) # [2, 3] # liste anlama (list comprehension) squares = [x*x for x in range(5)]
List comprehension ifadeleri genellikle daha kısa ve CPython'da döngülere göre daha verimli çalışır çünkü C seviyesinde optimize edilmiş döngüler kullanılır (kaynak).
| İşlem | Tipik karmaşıklık | Not |
|---|---|---|
| İndeks ile erişim | O(1) | Rastgele erişim hızlıdır. |
| append | O(1) amortize | Sona ekleme genelde sabit zamanlıdır. |
| insert / pop(0) / remove(value) | O(n) | Araya ekleme veya baştan/ortadan kaldırma maliyetlidir. |
| membership (in) | O(n) | Tekil arama lineer zamanlıdır. |
Sözlükler anahtar-değer eşlemesi sağlar; anahtarlar hashlenebilir olmalıdır (ör. int, str, tuple). Python'ın modern uygulamalarında dict ekleme sırasını korur ve genel amaçlı hızlı erişim gerekirken tercih edilir (kaynak).
# sözlük oluşturma ve erişim person = {"isim": "Ayşe", "yas": 30} print(person["isim"]) # "Ayşe" # güvenli erişim age = person.get("yas", 0) # değer güncelleme person["sehir"] = "İstanbul" # anahtar değer çiftleri üzerinde döngü for k, v in person.items(): print(k, v)
Setler benzersiz öğeler ve yüksek hızlı üyelik testleri için uygundur. Kümeler arası birleşim, kesişim ve fark gibi işlemler kolaylıkla yapılır.
# boş küme oluşturma s = set() # NOT: {} boş bir sözlüktür s.add(1) s.update([2,3]) print(2 in s) # True # küme işlemleri s1 = {1,2,3} s2 = {2,3,4} print(s1 & s2) # kesişim -> {2,3} print(s1 | s2) # birleşim -> {1,2,3,4}
Python'da sıralama için iki ana seçenek vardır: listeyi yerinde değiştiren list.sort() ve yeni bir liste döndüren sorted(). Her ikisi de key parametresi alır; key fonksiyonu her öğe için bir kez çağrılır, bu sayede decorate-sort-undecorate desenine (DSU) çoğu durumda gerek kalmaz (Sıralama Teknikleri).
# örnek: dict listelerini anahtara göre sıralama people = [{"isim": "A", "yas": 30}, {"isim": "B", "yas": 25}] people.sort(key=lambda p: p["yas"]) # yaşa göre artan
Büyük veri setlerinde key hesaplamaları maliyetliyse, key değerlerini önceden hesaplamak veya uygun veri yapıları kullanmak fayda sağlar. Ayrıca mümkünse bellek kullanımını ve algoritma karmaşıklığını göz önünde bulundurun.
matrix = [[0]*3]*3 # tüm satırlar aynı listeyi paylaşır (beklenmedik sonuçlar olabilir) # Doğru yöntem: matrix = [[0]*3 for _ in range(3)]
counts = {} for item in items: counts[item] = counts.get(item, 0) + 1
Listeler, sözlükler ve setler Python'da farklı ihtiyaçlara hizmet eder. Hangi yapıyı seçeceğinizi belirlerken erişim modelleri, ekleme/silme ihtiyaçları ve belleğinizi göz önünde bulundurun. Resmi Python belgeleri bu yapıların detaylarını ve örneklerini içerir; daha teknik bilgiler için Veri Yapıları ve Sıralama Teknikleri sayfalarına bakabilirsiniz.
Kaynaklar: Python — Veri Yapıları, Python — Sıralama Teknikleri, Python — Gömülü Türler
Yorumlar