Giriş
Bu rehber Python'un temel veri yapıları olan listeler, sözlükler (dictionary) ve setleri uygulamalı örneklerle açıklar. Amaç, hangi yapıyı hangi durumda tercih etmeniz gerektiğini öğretmek ve pratik python kod snippetleri ile hızlı başlayabilmenizi sağlamaktır. Temel davranışlar ve özellikler için Python'un resmi belgelerine bakabilirsiniz: Gömülü Türler — Python.
Kısa karşılaştırma: List, Dict, Set
- List (liste): Sıralı, değiştirilebilir, indekslenebilir koleksiyon. Aynı öğeden birden fazla bulunabilir.
- Dict (sözlük): Anahtar–değer çiftleri. Anahtarlar benzersiz olmalı ve hashable olmalıdır.
- Set: Sırasız, benzersiz öğeler kümesi; küme işlemleri için uygundur.
Listeler
Tanım ve oluşturma
Listeler, öğeleri sıralı tutan ve değiştirilebilen koleksiyonlardır (Python belgeleri bkz.: Gömülü Türler, Liste nesneleri). Örnek oluşturma:
my_list = [1, 2, 3, 'a']
empty = []
from_range = list(range(5)) # [0,1,2,3,4]
Temel işlemler
- Ekleme/çıkarma: append, extend, insert, pop, remove.
- Sıralama: sorted(my_list) veya my_list.sort().
- İterasyon: enumerate veya list komprehansiyonları tercih edilir.
- Liste üretimi: [x*x for x in range(10)].
Örnek kullanım:
my_list.append(4)
my_list.extend([5, 6])
val = my_list.pop() # son elemanı alır
squares = [x*x for x in range(6)]
Performans ve ipuçları
Listeler indeks ile doğrudan erişim sağlar; bu nedenle belli bir indeksteki öğeyi almak hızlıdır. Bununla birlikte, büyük listelerde başlangıca ekleme veya ortadan silme işlemleri listesinin yeniden düzenlenmesini gerektirebilir. Döngü sırasında bir listeyi değiştirmeniz gerekiyorsa, kopya üzerinde iterasyon yapın: for x in my_list[:]:
Sözlükler (Dictionaries)
Tanım ve oluşturma
Sözlükler anahtar–değer çiftleri olarak veri saklar. Anahtarlar benzersiz olmalı ve hashable türlerden olmalıdır; örneğin string, sayı veya tuple anahtar olabilir (detaylar: Gömülü Türler, Sözlük — Python Sözlüğü). Oluşturma örnekleri:
person = {'isim': 'Ayşe', 'yas': 30}
empty = {}
from_pairs = dict([('a', 1), ('b', 2)])
Temel işlemler
- Erişim: value = person['isim'] veya value = person.get('isim')
- Güncelleme: person['sehir'] = 'İstanbul' veya person.update({...})
- İterasyon: for k, v in person.items():
Örnek:
age = person.get('yas', 0)
person['meslek'] = 'mühendis'
for k, v in person.items():
print(k, v)
Anahtar kısıtları ve düzen
Anahtarların hashable olması gerekir; değiştirilebilir türler (ör. list) anahtar olarak kullanılamaz. Ayrıca Python 3.7 ve sonrasında sözlükler ekleme sırasını korur; bu özellik pratik dönüşümlerde faydalıdır.
Setler (Kümeler)
Tanım ve oluşturma
Setler, benzersiz öğelerden oluşan sırasız koleksiyonlardır ve küme teorisine dayalı işlemler için uygundur (Python belgelendirmesi: Set nesneleri). Oluşturma örnekleri:
s = {1, 2, 3}
empty = set() # boş set için set() kullanın; {} boş sözlüktür
unique = set([1, 2, 2, 3]) # {1,2,3}
Temel işlemler ve küme işlemleri
- add, remove, discard, pop
- Birleşim: a | b veya a.union(b)
- Kesişim: a & b veya a.intersection(b)
- Fark: a - b veya a.difference(b)
- Simetrik fark: a ^ b
Örnek:
a = {1, 2, 3}
b = {2, 3, 4}
union = a | b # {1,2,3,4}
intersection = a & b # {2,3}
İpuçları
Setler üyelik testlerinde etkilidir ve tekrar eden öğeleri filtrelemek için pratik bir yoldur. Ancak set kullanmak öğe sırasını korumaz; sıranın önemli olduğu durumlarda farklı yöntemler tercih edilmelidir.
Veri Yapıları Arası Dönüşümler
Öğeleri hızlıca benzersiz hale getirmek için set kullanılabilir:
unique = list(set(my_list)) # tekrarları kaldırır, fakat sıra değişebilir
Sıralı benzersiz bir liste gerekiyorsa (Python 3.7+):
ordered_unique = list(dict.fromkeys(my_list)) # ekleme sırasını korur
Pratik Örnekler
Örnek 1 — Öğelerin frekansını sayma (sözlük ile)
items = ['elma', 'armut', 'elma', 'muz']
counts = {}
for x in items:
counts[x] = counts.get(x, 0) + 1
Sonuç: counts == {'elma': 2, 'armut': 1, 'muz': 1}
Örnek 2 — Filtre ve liste üretimi
my_list = [0, 1, 2, 3, 4, 5]
evens = [x for x in my_list if x % 2 == 0] # [0,2,4]
Örnek 3 — Bir diziden çiftleri eşleştirme (zip)
keys = ['a', 'b', 'c']
values = [1, 2, 3]
d = dict(zip(keys, values)) # {'a':1,'b':2,'c':3}
En Yaygın Hatalar ve Nasıl Önlenir
- Döngü sırasında koleksiyon değiştirmek: Döngüde öğe silmek atlamalara sebep olabilir; bu durumda kopya üzerinde iterasyon yapın (ör. my_list[:]).
- Boş set karışıklığı: {} boş bir sözlüktür; boş set için set() kullanın.
- Hashable olmayan anahtar: Bir listeyi sözlük anahtarı olarak kullanmaya çalışmak TypeError verir; bunun yerine tuple veya string kullanın.
- Set ile sırayı korumak: Sıranın önemli olduğu durumlarda set ile deduplikasyon kullanmayın.
Hızlı Referans Tablosu
| Yapı | Oluşturma örneği | Not |
|---|---|---|
| Liste | [1,2,3] | Sıralı, değiştirilebilir, indekslenebilir |
| Sözlük | {'k': 'v'} | Anahtar–değer, anahtarlar hashable olmalı |
| Set | {1,2,3} veya set() | Sırasız, benzersiz öğeler, küme işlemleri |
Sonuç ve İleri Okuma
Listeler, sözlükler ve setler Python'da farklı görevler için tasarlanmıştır. Hangi yapıyı seçeceğiniz verinin sıralı olup olmadığı, tekrar eden öğeler gerekip gerekmediği ve hızlı anahtar araması ihtiyacına göre değişir. Daha ayrıntılı teknik bilgi ve tüm yöntemlerin listesi için Python'un resmi dokümantasyonunu inceleyin:
Gömülü Türler — Python
Liste nesneleri
Set nesneleri
Sözlük — Glossary