Python Set (Küme) Veri Yapısı: Sıfırdan İleri Seviye Kapsamlı Rehber
Python’da Set (Küme) veri yapısı, özellikle benzersiz veri tutma ve hızlı üyelik kontrolü gerektiren senaryolar için tasarlanmıştır.
Gerçek dünyada set mantığı şuralarda karşımıza çıkar:
- Duplicate (tekrarlı) veri temizleme
- Log analizi
- Kullanıcı etkileşim filtreleme
- Etiket (tag) sistemleri
- Veri karşılaştırma
- Matematiksel küme işlemleri (union, intersection)
Set, Python ekosisteminde performans odaklı en kritik veri yapılarından biridir.
Set Nedir?
Set, benzersiz (unique) elemanlardan oluşan, sırasız ve değiştirilebilir bir veri yapısıdır.
```python id="set1"
sayilar = {1, 2, 3, 4, 5}
print(sayilar)
---
# Set Özellikleri
Set:
* Sırasızdır
* Duplicate (tekrar) kabul etmez
* Mutable (değiştirilebilir)
* Indexlenemez
* Hash tabanlıdır → çok hızlıdır
---
# Set Oluşturma
## Temel Set
```python id="set2"
renkler = {"kırmızı", "mavi", "yeşil"}
print(renkler)
Boş Set (ÖNEMLİ!)
Yanlış:
```python id="set3"
bos = {}
print(type(bos))
Çıktı:
```text id="set4"
<class 'dict'>
Doğru:
```python id="set5"
bos = set()
print(type(bos))
---
# Duplicate Otomatik Silme
```python id="set6"
sayilar = {1, 2, 2, 3, 3, 3, 4}
print(sayilar)
Çıktı:
```text id="set7"
{1, 2, 3, 4}
---
# Set Elemanları Farklı Tipte Olabilir
```python id="set8"
veri = {1, "Python", 3.14, True}
print(veri)
Set Elemanına Erişim Yok
```python id="set9"
sayilar = {10, 20, 30}
print(sayilar[0]) # HATA
Çıktı:
```text id="set10"
TypeError
Set’e Eleman Ekleme
add()
```python id="set11"
sayilar = {1, 2, 3}
sayilar.add(4)
print(sayilar)
---
# Çoklu Eleman Ekleme
## update()
```python id="set12"
sayilar = {1, 2, 3}
sayilar.update([4, 5, 6])
print(sayilar)
Eleman Silme
remove()
```python id="set13"
sayilar = {1, 2, 3}
sayilar.remove(2)
print(sayilar)
Hata riski vardır.
---
## discard()
```python id="set14"
sayilar = {1, 2, 3}
sayilar.discard(99)
print(sayilar)
Hata vermez.
pop()
```python id="set15"
sayilar = {1, 2, 3, 4}
print(sayilar.pop())
print(sayilar)
---
## clear()
```python id="set16"
sayilar = {1, 2, 3}
sayilar.clear()
print(sayilar)
Set Üyelik Kontrolü (En Güçlü Özellik)
```python id="set17"
sayilar = {1, 2, 3, 4, 5}
print(3 in sayilar)
print(10 in sayilar)
Çıktı:
```text id="set18"
True
False
Set Uzunluğu
```python id="set19"
veri = {1, 2, 3, 4}
print(len(veri))
---
# Döngü ile Set Kullanımı
```python id="set20"
meyveler = {"elma", "armut", "muz"}
for m in meyveler:
print(m)
Set Matematiksel İşlemler
Set’in en güçlü tarafı burasıdır.
Union (Birleşim)
```python id="set21"
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b)
Çıktı:
```text id="set22"
{1, 2, 3, 4, 5}
union()
```python id="set23"
print(a.union(b))
---
# Intersection (Kesişim)
```python id="set24"
a = {1, 2, 3}
b = {2, 3, 4}
print(a & b)
Çıktı:
```text id="set25"
{2, 3}
---
# Difference (Fark)
```python id="set26"
a = {1, 2, 3}
b = {2, 3, 4}
print(a - b)
Çıktı:
```text id="set27"
{1}
---
# Symmetric Difference
```python id="set28"
a = {1, 2, 3}
b = {2, 3, 4}
print(a ^ b)
Çıktı:
```text id="set29"
{1, 4}
---
# Subset & Superset
```python id="set30"
a = {1, 2}
b = {1, 2, 3}
print(a.issubset(b))
print(b.issuperset(a))
Disjoint (Ortak eleman yok mu?)
```python id="set31"
a = {1, 2}
b = {3, 4}
print(a.isdisjoint(b))
---
# Set Comprehension
```python id="set32"
kareler = {x*x for x in range(10)}
print(kareler)
Hands-On 1: Duplicate Temizleme
```python id="set33"
veri = [1, 2, 2, 3, 3, 4, 5, 5]
temiz = set(veri)
print(list(temiz))
---
# Hands-On 2: Kullanıcı Analizi
```python id="set34"
giris1 = {"Ali", "Ayşe", "Mehmet"}
giris2 = {"Mehmet", "Zeynep", "Ali"}
aktif = giris1 & giris2
print(aktif)
Hands-On 3: Benzersiz Ürünler
```python id="set35"
satislar = [
"Laptop",
"Mouse",
"Laptop",
"Klavye",
"Mouse"
]
urunler = set(satislar)
print(urunler)
---
# Hands-On 4: Log Analizi
```python id="set36"
loglar = [
"INFO",
"ERROR",
"INFO",
"WARNING",
"ERROR"
]
unique_logs = set(loglar)
print(unique_logs)
Hands-On 5: Eksik Veri Tespiti
```python id="set37"
tum_kullanicilar = {"Ali", "Ayşe", "Mehmet", "Zeynep"}
aktif_kullanicilar = {"Ali", "Mehmet"}
pasif = tum_kullanicilar - aktif_kullanicilar
print(pasif)
---
# Hands-On 6: Etiket Sistemi
```python id="set38"
urun = {
"ad": "Laptop",
"tag": {"oyun", "performans", "ssd"}
}
urun["tag"].add("yeni")
print(urun)
Set vs List vs Tuple
| Özellik | List | Tuple | Set |
|---|---|---|---|
| Sıralı | ✔ | ✔ | ✖ |
| Değiştirilebilir | ✔ | ✖ | ✔ |
| Duplicate | ✔ | ✔ | ✖ |
| Index | ✔ | ✔ | ✖ |
| Hızlı arama | ❌ | ❌ | ✔ |
Performans Avantajı
Set’in en güçlü yönü:
```python id="set39"
import time
veri = set(range(1000000))
start = time.time()
print(999999 in veri)
end = time.time()
print(end - start)
👉 O(1) arama performansı
---
# Python ve C# Karşılaştırma
## Python
```python id="set40"
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b)
C
```csharp id="set41"
HashSet a = new() { 1, 2, 3 };
HashSet b = new() { 3, 4, 5 };
a.UnionWith(b);
---
# Gerçek Hayat Kullanım Alanları
Set özellikle şuralarda kullanılır:
* Log deduplication
* Email list filtering
* API rate limiting
* Search indexing
* Recommendation systems
* Data cleaning pipelines
---
# İleri Seviye Örnek: Ziyaretçi Analizi
```python id="set42"
gun1 = {"user1", "user2", "user3"}
gun2 = {"user2", "user3", "user4"}
gun3 = {"user3", "user4", "user5"}
aktif = gun1 | gun2 | gun3
sadik = gun1 & gun2 & gun3
print("Aktif:", aktif)
print("Sadık:", sadik)
Özet
Set veri yapısı Python’da:
- Duplicate verileri temizlemek
- Hızlı üyelik kontrolü yapmak
- Matematiksel küme işlemleri yapmak
- Veri analizi ve filtreleme yapmak
için vazgeçilmezdir.
İyi bir Python geliştiricisi:
- Set operations (union, intersection, difference)
- add / remove / discard farkları
- Performans avantajlarını
- Set comprehension
- Real-world data filtering tekniklerini
çok iyi bilmelidir.
Set, özellikle veri analizi, büyük veri, backend sistemler ve log processing alanlarında kritik öneme sahiptir.
Top comments (0)