Veri tiplerinin sonuncusu olan set (küme) Python’da kullanılmaktadır. Matematikte kümelerle alakalı kullandığımız her şeyi Python kümelerde de kullanabilmekteyiz. Python’da kümeler kesişim, fark ve birleşim işlemini yapabilmektedir.
Set’in özellikleri ise
- Sırasızdır.
- Değerleri eşsizdir.
- Değiştirilebilir.
- Farklı veri tiplerini bir arada bulundurabilir.
Küme oluşturmanın iki yolu bulunmaktadır. İlki küme parantezi({}) içerisine alıp içerisinde bulunan verileri virgülle ayırarak yazabilirsiniz.
firstset={"Bigdatacı",5,1000,'b'}
print(firstset)
Kodun çıktısı ise
Diğer bir yöntem ise set() işlevi kullanılarak oluşturabilir.
secondset={"list","tuple","dictionary",3,300}
s=set(secondset)
print (s)
Kodun çıktısı
Oluşturulan verilerin tipinin küme olup olmadığını inceleyelim.
ex="Bigdatacı is writing code."
type(ex)
e=set(ex)
type(e)
Kodun çıktısı
İlk aşamada string olan veri daha sonradan set() fonksiyonu içerisine yazılarak tipi set’e çevrilmiştir.
Set’ler özellikleriyle diğer veri tiplerinden daha hızlı ve performanslı olmanızı sağlarlar.
Set İçerisinde Boş Küme Tanımlama
Küme içerisinde normal olarak boş küme tanımlarken yorumlayıcı tanımlanan set’i sözlük olarak algılamaktadır. Bundan dolayı küme boş küme kodu yazarken aşamalar:
emptyset={}
type(emptyset)
emptyset=set()
type(emptyset)
Kodun çıktısı
İlk emptyset’i oluşturulup tipine bakıldığında dictionary olduğu görüldü. 2. emptyset oluşturulduktan sonra tipine bakıldığında küme olduğu görülmüştür.
Set Elemanlarına Erişim
Python’da küme veri tipi sırasız olduğundan dolayı küme içerisinde bulunan herhangi bir elemana erişmemiz mümkün olmamaktadır. (İndeksleme yapılamamaktadır.)
Küme Elemanını Güncelleme
Kümeye bir eleman eklemek için add() fonksiyonu kullanılabilir.
set1={'a','b','c','d'}
set1.add("Bigdataci")
print(set1)
Kodun çıktısı
Çıktıda görüldüğü gibi eklenen eleman da kümenin içerisinde yer almaktadır.
Eğer kümeye yeni elemanlar ekleyecekseniz update() fonksiyonunu kullanmanız uygun olacaktır.
set1={'a','b','c','d'}
set2={'e','f','g','h'}
set1.update(set2)
print(set1)
Kodun çıktısı
Çıktıda görüldüğü gibi set1’e set2 elemanlarıyla beraber eklenmiştir.
Kümeden Eleman Çıkartma
Kümeden eleman çıkartma işlemi yapılırken remove() fonksiyonu kullanılır.
myset={"Hello","Bigdataci"}
s=set(myset)
print(s)
s.remove("Hello")
print(s)
Kodun çıktısı ise
Bir başka yöntem ise discard() fonksiyonunu kullanarak silebilirsiniz. Bu fonksiyonun remove()’dan farkı, olmayan bir elemanı silerken hata vermemesidir. Örnek
myset1={"Hello","Bigdataci",1,2,3}
s=set(myset1)
s.remove("Hello")
print(s)
s.discard(1)
print(s)
Kodun çıktısı
Eğer bir veri tipiyle kullanılan fonksiyonları öğrenmek istiyorsanız dir() fonksiyonunu kullanarak uygulanabilecek tüm fonksiyonlara ulaşabilirsiniz. Önceki örnekte set veri tipiyle alakalı olan fonksiyonlar
dir(s)
Set İşlemleri
Set işlemleri ile matematikteki kümelerde olduğu gibi fark, kesişim, birleşim işlemleri yapılabilir.
Difference(Fark İşlemi)
İki kümenin farkını almamıza işe yaramaktadır.
exset1=set([0,2,4,6,8])
exset2=set([1,2,3,4])
exset1.difference(exset2)
exset2.difference(exset1)
Kodun çıktısı
exset1.difference işleminde A/B yapıldı. exset2.difference işleminde ise B/A yapılmıştır.
Symmetric Difference
İki kümede de ortak olmayan elemanları bulmayı sağlar.
exset1=set([0,2,4,6,8])
exset2=set([1,2,3,4])
exset1.symmetric_difference(exset2)
Kodun çıktısı
Ortak olmayan elemanların 0,1,3,6,8 olduğu görülmüştür.
Intersection & Union
Intersection ile kümede bulunan ortak elemanları bulabilirsiniz.
exset1=set([0,2,4,6,8])
exset2=set([1,2,3,4])
exset1.intersection(exset2)
exset2.intersection(exset1)
Kodun çıktısı
Kümede ortak olan elemanlar 2 ve 4 olduğu kodlardan da görüldü.
Union ise birleşim işlemini gerçekleştirmektedir.
exset1=set([0,2,4,6,8])
exset2=set([1,2,3,4])
exset1.union(exset2)
unionset=exset1.union(exset2)
unionset
Kodun çıktısı
Kümelerde elemanların eşsiz olduğundan bahsedilmişti. Görüldüğü gibi elemanlar tekrarlamamaktadır.
Set Sorgu İşlemleri
Isdisjoint
Isdisjoint ile iki kümenin kesişiminin boş olup olmadığı sorgulanır.
set1=set([700,800,900])
set2=set([500,600,700,800,900])
set1.isdisjoint(set2)
Kodun çıktısı
Kodun çıktısı sonucunda kümelerin ortak elemanları olduğu için “Kümelerin kesişimi boş mu?” sorusunun yanıtı “False” olarak dönmüştür.
Issubset
Bir kümede yer alan bütün elemanların başka bir küme içerisinde yer alıp almadığı issubset ile öğrenilebilir.
set1=set([700,800,900])
set2=set([500,600,700,800,900])
set1.issubset(set2)
Kodun çıktısı
set1 kümesi set2 kümesinin içinde yer aldığı için “set1 kümesi set2 içerisinde yer alıyor mu?” sorusu “True” dönmüştür.