Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

Python Kümeler Nasıl Kullanılır? Tekrarlı Veriler Nasıl Ayıklanır?

python-kumeler-nasil-kullanilir-tekrarli-veriler-nasil-ayiklanir
Bu yazıda neler var?
  1. Python kümesi nasıl oluşturulur?
  2. add, update, remove ve discard nasıl çalışır?
  3. Kümelerde üyelik ve temel işlemler nasıl yapılır?
  4. Tekrarlı katılımcılar ve ortak ilgi alanları nasıl bulunur?
  5. Kümelerin sınırları: değiştirilebilirlik, eleman türü ve sıra
  6. Liste, demet ve küme arasında nasıl seçim yapılır?
  7. Sık Sorulan Sorular

Python kümeler nasıl kullanılır? Kümeler, tekrarlı verileri tekilleştirmek ve bir değerin koleksiyonda bulunup bulunmadığını kontrol etmek için kullanılır. Bir listenin sıra bilgisi veya aynı değerin kaç kez tekrar ettiği önemliyse liste ya da demet seçmelisin; küme bu bilgileri korumayı amaçlamaz.

Bir listeyi set() ile kümeye dönüştürerek tekrar eden elemanları tekilleştirebilirsin. Küme oluştururken her eleman yalnızca bir kez tutulur.

Python kümesi nasıl oluşturulur?

Boş olmayan bir kümeyi süslü parantezlerle oluşturabilirsin. Aynı değer birden fazla yazılsa bile kümede tek kez bulunur. Liste, demet veya başka bir yinelenebilir nesne set() içine verilerek de kümeye dönüştürülebilir.

sayilar = {1, 2, 2, 3}
liste = [3, 3, 4, 5]
donusen_kume = set(liste)

bos_kume = set()
bos_sozluk = {}

print(sorted(sayilar))
print(sorted(donusen_kume))
print(type(bos_kume).__name__)
print(type(bos_sozluk).__name__)

Beklenen çıktı şöyledir:

[1, 2, 3]
[3, 4, 5]
set
dict

sorted() burada yalnızca çıktıyı okunabilir ve öngörülebilir göstermek için kullanılır. Kümenin kendisini sıralı bir yapı gibi değerlendirmemelisin. Boş küme oluşturmak için set() yazılır. {} ifadesi ise boş küme değil, boş sözlük oluşturur.

add, update, remove ve discard nasıl çalışır?

add, update, remove ve discard nasıl çalışır?

Bu metotlar mevcut kümeyi doğrudan değiştirir:

  • add(eleman), kümeye tek bir eleman ekler. Eleman zaten varsa kümede ikinci kez oluşturulmaz.
  • update(yinelenebilir), verilen liste, demet veya küme içindeki elemanları ekler.
  • remove(eleman), belirtilen elemanı siler. Eleman bulunamazsa KeyError üretir.
  • discard(eleman), belirtilen elemanı siler. Eleman yoksa hata vermeden devam eder.
beceriler = {"Python"}

beceriler.add("SQL")
beceriler.update(["Git", "Java"])
beceriler.remove("SQL")
beceriler.discard("C++")

print(sorted(beceriler))

Beklenen çıktı:

['Git', 'Java', 'Python']

Bu örnekte add() tek bir değer eklerken update() listedeki iki değeri ekledi. remove() mevcut olan "SQL" elemanını sildi. "C++" kümede bulunmadığı hâlde discard() hata üretmedi. Metinler de yinelenebilir nesnedir. Bu nedenle beceriler.update("Go") yazıldığında "Go" tek eleman olarak değil, "G" ve "o" karakterleri olarak eklenebilir. Tek bir metni eleman olarak eklemek için add("Go") kullanmalısın.

Kümelerde üyelik ve temel işlemler nasıl yapılır?

Bir elemanın kümede bulunup bulunmadığını kontrol etmek için in ve not in operatörlerini kullanabilirsin. Örneğin 'python' in a ifadesi, python elemanı a kümesindeyse True sonucunu verir. 'sql' not in a ise sql elemanının kümede bulunmadığını kontrol eder.

İki küçük küme tanımlayalım: a = {'python', 'java'} ve b = {'python', 'sql'}. Bu kümeler üzerinde temel işlemler şöyle yapılır:

  • a | b veya a.union(b): Birleşim işlemidir. Her iki kümede bulunan tüm farklı elemanları verir.
  • a & b veya a.intersection(b): Kesişim işlemidir. İki kümede ortak bulunan elemanları verir. Bu örnekte ortak eleman python olur.
  • a - b veya a.difference(b): Fark işlemidir. Yalnızca a içinde bulunan ve b içinde bulunmayan elemanları verir. Sonuçta java kalır.
  • a ^ b veya a.symmetric_difference(b): Simetrik fark işlemidir. Yalnızca kümelerden birinde bulunan elemanları verir. Bu örnekte java ve sql bulunur.

Fark işlemi yönlüdür. Yani a - b ile b - a aynı sonucu vermek zorunda değildir. Ayrıca kümeler yazdırılırken elemanların ekranda hangi sırada görüneceğine güvenmemelisin.

Tekrarlı katılımcılar ve ortak ilgi alanları nasıl bulunur?

Tekrarlı katılımcılar ve ortak ilgi alanları nasıl bulunur?

Bir listede aynı katılımcı birden fazla kez bulunuyorsa set() kullanarak tekrarları kaldırabilirsin. İki grubun ortak ilgi alanlarını bulmak içinse kesişim operatörü olan & kullanılabilir.

# Katılımcı adlarını, tekrarları koruyan bir liste olarak tanımlıyoruz.
katilimcilar = ['Ada', 'Deniz', 'Ada', 'Ece', 'Deniz']
# Listeyi kümeye çevirerek tekrar eden adları kaldırıyoruz.
benzersiz_katilimcilar = set(katilimcilar)
# Kümeyi yalnızca okunabilir bir çıktı için sıralanmış listeye dönüştürüyoruz.
katilimci_ciktisi = sorted(benzersiz_katilimcilar)
# Birinci grubun ilgi alanlarını küme olarak tanımlıyoruz.
ilgi_alani_a = {'python', 'algoritma', 'oyun'}
# İkinci grubun ilgi alanlarını küme olarak tanımlıyoruz.
ilgi_alani_b = {'python', 'veri', 'oyun'}
# İki grubun ortak ilgi alanlarını kesişim işlemiyle buluyoruz.
ortak_ilgiler = ilgi_alani_a & ilgi_alani_b
# Ortak ilgi alanlarını okunabilir bir çıktı için sıralıyoruz.
ortak_ilgi_ciktisi = sorted(ortak_ilgiler)
# Tekrarsız katılımcı listesini ekrana yazdırıyoruz.
print(katilimci_ciktisi)
# Ortak ilgi alanlarını ekrana yazdırıyoruz.
print(ortak_ilgi_ciktisi)

Beklenen çıktı:
['Ada', 'Deniz', 'Ece']
['oyun', 'python']

sorted() burada kümeyi sıralı hâle getirmez. Kümeyi değiştirmeden, sonucu okunabilir ve bu örnekte tekrarlanabilir bir sıraya sahip ayrı bir liste olarak sunar. Kümeler ve temel Python veri yapıları konusundaki bilgini yoklamak için Python bilgi testini çözebilirsin.

Kümelerin sınırları: değiştirilebilirlik, eleman türü ve sıra

Kümenin kendisi değiştirilebilir bir veri yapısıdır. Oluşturduğun kümeye add() ve update() ile eleman ekleyebilir, remove() ve discard() ile eleman çıkarabilirsin. Ancak kümeye eklenecek her elemanın hashlenebilir olması gerekir.

Sayılar, metinler ve bütün elemanları uygun olan demetler küme elemanı olabilir. Örneğin (1, 'Python') kullanılabilir. Buna karşılık liste, sözlük ve başka bir değiştirilebilir set doğrudan küme elemanı yapılamaz. Elemanlarının içinde liste bulunan bir demet de hashlenebilir olmadığı için kullanılamaz.

Kümeler indekslenemez. Bu nedenle kume[0] biçiminde bir erişim yapamazsın. Ayrıca yineleme veya ekrana yazdırma sırasında görülen sıraya güvenmemelisin. Özgün sıra önemliyse kaynak veriyi bir listede koru, kümeyi ise tekrarlı değerleri ayıklamak ve üyelik kontrolü yapmak için kullan.

Liste, demet ve küme arasında nasıl seçim yapılır?

Seçimi veri üzerinde hangi işlemleri yapacağına göre yapabilirsin. Aşağıdaki karşılaştırma, üç yapının temel farklarını gösterir.

Veri yapısı Tekrar Sıra Değiştirilebilirlik Uygun kullanım amacı
Liste Tekrarlar korunur Sıra korunur, indeks kullanılabilir Değiştirilebilir Sıralı kayıtlar ve tekrarın önemli olduğu veriler
Demet Tekrarlar korunur Sıra korunur, indeks kullanılabilir Demetin yapısı değiştirilemez Sabit ve sıralı değer grupları
Küme Tekrarlar tutulmaz Güvenilecek bir sıra ve indeks yoktur Değiştirilebilir Tekilleştirme, üyelik ve küme işlemleri

Aynı veriyi üç farklı yapıya dönüştürdüğünde farkı daha net görebilirsin:

veriler = ['Python', 'Java', 'Python']

liste = list(veriler)     # Tekrar ve sıra korunur
demet = tuple(veriler)    # Tekrar ve sıra korunur
kume = set(veriler)       # Tekrarlar kaldırılır

print(liste)
print(demet)
print(kume)

İlk satırda ['Python', 'Java', 'Python'], ikinci satırda ('Python', 'Java', 'Python') görülür. Üçüncü satırda Python ve Java birer kez bulunur. Kümenin ekrana yazdırılma sırası değişebilir.

  1. Tekrarlar korunacak mı? Evetse liste veya demet kullan. Tekrarsızlık gerekiyorsa kümeyi değerlendir.
  2. Sıra veya indeks gerekli mi? Gerekliyse liste ya da demet seç. Kümede konuma göre erişim yapılmaz.
  3. Koleksiyon sonradan değişecek mi? Değişecekse liste uygundur. Sabit kalacak ve sıralı bir grup oluşturacaksa demet uygun adaydır. Üyelik, tekilleştirme, birleşim, kesişim veya fark işlemleri gerekiyorsa küme daha anlamlıdır.

Sık Sorulan Sorular

Python’da boş küme neden {} ile değil set() ile oluşturulur?

{} Python’da boş sözlük oluşturur. Boş küme oluşturmak için set() yazmalısın. Eleman içeren kümelerde ise süslü parantez kullanılabilir.

remove() ile discard() arasında hangi fark vardır?

Her iki metot da kümeden eleman çıkarmak için kullanılır. Aranan eleman yoksa remove() KeyError oluşturur, discard() ise işlem yapmadan devam eder.

Bir kümeye liste, sözlük veya başka bir küme eklenebilir mi?

Hayır. Liste, sözlük ve değiştirilebilir küme doğrudan küme elemanı yapılamaz. Kümeye eklenecek değerlerin hashlenebilir olması gerekir.

Tekrarlı verileri kümeye çevirince özgün sıra neden korunmayabilir?

Küme, verileri kaynak listedeki konumlarına göre değil, küme yapısının çalışma biçimine göre tutar. Bu nedenle tekrarlar kaldırılırken özgün sıra da güvenilecek bir özellik olarak korunmaz.

Liste, demet ve küme arasındaki seçimi kullanım amacına göre yaptığında Python’da veri yapılarıyla çalışmak daha anlaşılır hâle gelir. Python öğrenimini birebir sürdürmek istersen birebir Python dersleri hakkında bilgi alabilirsin.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara