Python Dersleri #24: Küme Veri Tipi
Uzmoon · · 4 dk
Bu Dersin Amacı
Python'da benzersiz elemanlardan oluşan, sırasız ve değiştirilebilir bir koleksiyon olan küme (set) veri tipini oluşturmayı, eleman ekleme ve çıkarma yöntemlerini öğrenmek.
Küme (Set) Nedir?
Küme, matematikteki küme kavramına dayanan, benzersiz (tekrar etmeyen) elemanlardan oluşan, sırasız (unordered) ve değiştirilebilir (mutable) bir veri yapısıdır. Listelerden farklı olarak indeksleme desteklemez; bir elemana konumuyla erişemezsiniz. Kümeler, üyelik testleri, tekrar eden verileri temizleme ve matematiksel küme işlemleri (birleşim, kesişim, fark) için idealdir.
Küme Oluşturma
Küme iki yolla oluşturulur: süslü parantez {} ile veya set() yapıcı fonksiyonu ile. Boş küme oluşturmak için set() kullanmalısınız; {} boş sözlük oluşturur.
# Süslü parantez ile küme oluşturma
meyveler = {"elma", "armut", "muz", "elma"} # Tekrar eden 'elma' tek kez kalır
print(meyveler) # Çıktı sırası değişebilir: {'muz', 'elma', 'armut'}
# set() fonksiyonu ile küme oluşturma
harfler = set("merhaba") # String karakterlerden küme
print(harfler) # {'a', 'b', 'e', 'h', 'm', 'r'}
# Boş küme
bos_kume = set()
print(type(bos_kume)) # <class 'set'>
# Yanlış: {} boş sözlük oluşturur
yanlis = {}
print(type(yanlis)) # <class 'dict'>
Eleman Ekleme ve Güncelleme
Kümeler değiştirilebilir olduğu için eleman eklenebilir. add() tek eleman, update() ise yinelebilir (iterable) bir yapıdan birden fazla eleman ekler.
sayilar = {1, 2, 3}
# Tek eleman ekleme
sayilar.add(4)
print(sayilar) # {1, 2, 3, 4}
# Aynı elemanı tekrar eklemek hiçbir şey yapmaz
sayilar.add(2)
print(sayilar) # {1, 2, 3, 4} (değişmez)
# Birden fazla eleman ekleme (liste, tuple, string, başka küme vb.)
sayilar.update([5, 6, 7])
print(sayilar) # {1, 2, 3, 4, 5, 6, 7}
sayilar.update((8, 9), {10, 11}) # Birden fazla iterable
print(sayilar) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
Eleman Çıkarma
Eleman çıkarmak için üç yöntem vardır: remove(), discard() ve pop(). remove() eleman yoksa hata verir, discard() sessizce devam eder. pop() rastgele bir elemanı çıkarıp döndürür (küme boşsa hata verir).
isimler = {"Ali", "Ayşe", "Veli", "Zeynep"}
# remove(): eleman yoksa KeyError
isimler.remove("Veli")
print(isimler) # {'Ali', 'Ayşe', 'Zeynep'}
# isimler.remove("Mehmet") # KeyError: 'Mehmet'
# discard(): eleman yoksa hata vermez
isimler.discard("Mehmet") # Sessizce geçer
print(isimler) # {'Ali', 'Ayşe', 'Zeynep'}
# pop(): rastgele eleman çıkarır ve döndürür
cikarilan = isimler.pop()
print(f"Çıkarılan: {cikarilan}") # Örn: Çıkarılan: Ali
print(isimler) # Kalan: {'Ayşe', 'Zeynep'}
# Tüm elemanları temizleme
isimler.clear()
print(isimler) # set()
Küme Özellikleri ve Sık Kullanılan İşlemler
- Benzersizlik: Aynı değerden birden fazla olamaz.
- Sırasızlık: Elemanlar herhangi bir sırada saklanır; indeksleme yoktur.
- Değiştirilebilirlik: Eleman eklenip çıkarılabilir ama elemanlar değiştirilemez (immutable olmalı: sayı, string, tuple). Liste veya sözlük küme elemanı olamaz.
- Üyelik testi:
inoperatörü ile hızlı kontrol. - Uzunluk:
len()fonksiyonu ile eleman sayısı.
ogrenciler = {"Ahmet", "Elif", "Can", "Deniz"}
# Üyelik testi
print("Can" in ogrenciler) # True
print("Burak" not in ogrenciler) # True
# Eleman sayısı
print(len(ogrenciler)) # 4
# Listeyi kümeye çevirerek tekrarları temizleme
sayilar_list = [1, 2, 2, 3, 3, 3, 4]
benzersiz = set(sayilar_list)
print(benzersiz) # {1, 2, 3, 4}
# Küme elemanları üzerinde döngü
for ogrenci in ogrenciler:
print(ogrenci)
# Çıktı sırası rastgeledir
Sık Yapılan Hatalar
- Boş küme oluşturmak için
{}kullanmak; bu boş sözlük oluşturur. Doğrususet(). - Küme elemanına indeksle erişmeye çalışmak (
kume[0]); kümeler sırasız olduğu için indeksleme desteklemez. - Değiştirilebilir (mutable) nesneleri (liste, sözlük, başka küme) küme elemanı yapmaya çalışmak;
TypeErroralırsınız. Tuple kullanılabilir. remove()ile olmayan elemanı silmeye çalışıpKeyErroralmak; bunun yerinediscard()kullanın.- Kümenin sıralı olduğunu varsayıp belirli bir sırayla çıktı beklemek; kümeler sırasızdır, sıralı çıktı için
sorted(kume)kullanın.
Alıştırma
Aşağıdaki listeden tekrar eden şehir isimlerini kaldırarak bir küme oluşturun. Ardından "Ankara" ve "İzmir" şehirlerini kümeye ekleyin. Son olarak "Bursa" şehrini kümeden çıkarın (kümede yoksa hata vermeden). Kümenin son halini yazdırın.
sehirler_listesi = ["İstanbul", "Ankara", "İzmir", "Bursa", "Antalya", "İstanbul", "Ankara"]
Çözüm
sehirler_listesi = ["İstanbul", "Ankara", "İzmir", "Bursa", "Antalya", "İstanbul", "Ankara"]
# Listeyi kümeye çevir (tekrarlar otomatik kalkar)
sehirler_kume = set(sehirler_listesi)
print("Oluşturulan küme:", sehirler_kume)
# Ankara ve İzmir ekle (zaten varsa bir şey değişmez)
sehirler_kume.add("Ankara")
sehirler_kume.add("İzmir")
print("Ekleme sonrası:", sehirler_kume)
# Bursa'yı hata vermeden çıkar
sehirler_kume.discard("Bursa")
print("Son hali:", sehirler_kume)
Özet
- Küme (
set) benzersiz, sırasız ve değiştirilebilir bir koleksiyondur. {}veyaset()ile oluşturulur; boş küme içinset()şarttır.add()tek,update()çoklu eleman ekler; tekrar edenler göz ardı edilir.remove()hata verir,discard()sessizce geçer,pop()rastgele çıkarır.- Kümeler indekslenemez; üyelik testi için
in, boyut içinlen()kullanılır.