Merhaba Arkadaşlar,
Mobilhenem.com da yine bir dersle birlikteyiz Python Dersleri serisinin bu dersinde Set(Küme) ve Frozenset(Dondurulmuş Küme) ve Metotlarını işleyeceğim keyifli okumalar.
Set(Küme) ve Frozenset(Kısıtlanmış Küme) Nedir
Arkadaşlar daha önceki Veri Türleri dersimizde Python da veri türlerini mutable(Değiştirilebilir) ve immutable(değiştirilemez) olarak ikiye ayırmıştık burada ise hem değiştirilebilir hem değiştirilemez veri türünü işleyeceğiz.
Set(Küme) Nedir ?
Liste, sözlük ve demet veri türü gibi birden çok veri türünü birlikte barındıran veri tipidir. Kümeler ile ilgili yaptığınız her türlü işlevi(birleşme,kesişim vs.) bu veri tipi ile yapabilirsiniz.
Set(Küme) Kullanımı
Hemen bir örnekle küme kullanımını göstereyim;
kume= {"Python",'c',4,"Cahit"}
Oldukça basit bir kullanımı var ama burada dikkat etmemiz gereken bir şey var eğer boş küme tanımlarsak şu şekilde ;
kume={}
yorumlayıcı bunu Sözlük olarak algılayacaktır. Peki nasıl boş küme oluşturacağız derseniz onu da göstereyim;
kume = set()
şeklinde tanımlıyoruz.
Kümeler hakkında önemli bir not daha vereyim o da şu : burada gördüğümüz kümelere matematikte gördüğümüz kümelere olduğu gibi bir elemandan sadece bir tane olabilir. Peki biz eklemeye çalışırsak ne olur görelim;
kume= {"Python",'c',4,"Cahit","Python"} print(kume) {'Python', 'c', 4, 'Cahit'}
Şimdi siz diyeceksiniz tamam da ekledik hata vermedi sadece gösterirken aynı olandan bir tane tek gösteriyor derseniz hemen size şu şekilde göstereyim.
kume= {"Python",'c',4,"Cahit","Python"} print(len(kume)) 4
Gördüğünüz gibi kümenin uzunluğuna baktığımızda küme 5 eleman eklememize rağmen 4 eleman görüyor bu önemli notu da verdiğimize göre Set(Küme)’nin elemanlarına nasıl erişiriz onun göstereyim.
Set(Küme) Öğelerine Erişim
kume= {"Python",'c',4,"Cahit","Python"} print(kume[3]) TypeError: 'set' object does not support indexing
Bu şekilde bir hata aldık sebebi ise şu Set(Küme) aynı Sözlükler gibi sıralı veri tipi değildir. Bu yüzden indexleme desteklemez. Siz şimdi diyeceksiniz ki peki neden kümeleri kullanayım ki doğrudur kümeler tek başına gereksiz görünse de birden fazla küme olduğu zaman çokça ihtiyacınız olacaktır o zaman kümelerin ne kadar gerekli olduğunu göreceksiniz. Onun için hemen Set(Küme) Metotlarına geçiyorum.
Küme metotlarını her derste olduğu gibi dir() fonksiyonu ile gösterelim.
Set(Küme) Metotları
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
Biz bu derste diğer derslerde olduğu gibi __X__ şeklinde olan metotlara yani özel metotlara girmeyeceğiz.
['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
Add Metodu :
Bu metot Kümeye eleman öğe eklememizi sağlayan metottur;
kume ={1,2,3,4,5} kume.add(6) print(kume) {1, 2, 3, 4, 5, 6}
Clear Metodu:
Bu metot ise kümeyi temizlemeye yarayan ve metodun boş değerini döndürür.
kume ={1,2,3,4,5,6} kume.clear() print(kume) set()
Copy Metodu:
Bu metot kümeyi kopyalamamıza yarayan metot dur. Bir kümeyi kopyalamadan da başka bir değişkene atayabiliriz ama biz bir küme üzerinde değiştirme işlemi yaptığımızda diğer küme de değişiyor bu yüzden copy() metodunu kullanıyoruz.
kume ={1,2,3,4,5,6} kume_yedek =set() kume_yedek=kume.copy() print(kume_yedek) {1, 2, 3, 4, 5, 6}
Update Metodu
Bu metot kümeyi yenilememizi sağlıyor.
kume ={1,2,3,4,5,6} kume_2={7,8,9,10} kume.update(kume_2) print(kume) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Remove Metodu
Bu metot kümeden eleman silmeye yarayan metot dur.
kume ={1,2,3,4,5,6} kume.remove(4) print(kume) {1, 2, 3, 5, 6}
Eğer silmek istediğimiz eleman küme içinde bulunmuyorsa bize şu hatayı verir;
kume ={1,2,3,4,5,6} kume.remove(8) print(kume) kume.remove(8)
KeyError: 8
Discard Metodu
Bu metot da remove() metodu gibi kümede istenilen elemanı silme yarıyor ama bu silmek istenilen eleman eğer kümenin içinde yoksa hata vermez.
kume ={1,2,3,4,5,6} kume.discard(8) print(kume) {1, 2, 3, 4, 5, 6}
Pop Metodu
Bu metot da kümenin ilk elemanını silmeye yarayan metotdur.
kume ={1,2,3,4,5,6} kume.pop() print(kume) {2,3,4,5,6}
Bir küme üzerinde çeşitli işlemler yapmak için bazı metotları gördük fark ettiyseniz bu metotları daha önce liste,demet ve sözlük veri türlerini işlerken de görmüştük.
Şimdi işleyeceğiz metotlar birden fazla küme üzerinde işlemler yapmak için kullanılır bu metotlar ile neden kümeler sorusuna da cevap verebileceksiniz 🙂
İlk önce kümeleri oluşturalım;
A = {1,2,3,4,9} B = {3,4,5,6,10} C = {4,7,8,9,10}
Union Metodu
İki kümenin kümenin birleşmesini sağlayan metottur.
A = {1,2,3,4,9} B = {3,4,5,6,10} C = {4,7,8,9,10} print(A.union(B)) {1, 2, 3, 4, 5, 6, 9, 10}
Bu şekilde iki kümeyi birleştirmeyi yaptık fark ettiyseniz her iki kümede de 4 ve 5 elemanları olmasına rağmen sadece bir defa yazdı.
İsterseniz şimdi üç kümenin birleşimini yapalım yapalım.
print(A.union(B.union(C)))
Intersection Metodu
Bu metot iki kümenin kesişimini veren metottur.
print(A.intersection(C)) {9, 4}
print(A.intersection(B.intersection(C))) {4}
Intersection_update Metodu
Bu metot da intersection metodu gibi iki metodun kesişimini alır ve güncelleme işlemini yapar.
A.intersection_update(C) print(A) {9, 4}
Isdisjoint Metodu
Bu metot iki kümenin kesişimin boş olup olmadığını kontrol eden metotdur. Sonuca göre True veya False değer döndürür.
A = {1,2,3,4,9} C = {4,7,8,9,10} False
False değer döndürdü çünkü iki kümenin kesişimi boş değil 4 ve 9 elamanı var. Eğer iki elamanı silersek True değer verecektir.
A = {1,2,3,} C = {4,7,8,9,10} True
Difference Metodu
Bu metot ise iki arasındaki farkı bulmaya yarayan metotdur.
print(A.difference(B)) {1, 2, 9}
Differnce_uptdate Metodu
Bu metot hem iki küme arasındaki farkı bulur hemde kümeyi günceller:
A = {1,2,3,4,9} B = {3,4,5,6,10} C = {4,7,8,9,10} A.difference_update(B) print(A) {1, 2, 9}
A kümesin yeni hali bu şekilde olur.
Issubset Metodu
Bu metot ise bir kümenin başka bir kümenin alt kümesi olup olmadığını sorgulayan metotdur.
A = {1,2,5,8,9,12} B = {1,2,5} print(B.issubset(A)) True
Biz burada B kümesi A kümesinin Alt kümesi mi şeklinde bir sorgu yapmış olduk.
Issuperset Metodu
Bu metot da issubset metodunu tersini yapıyor. Bize bir kümenin başka bir kümeyi kapsayıp kapsamadığını sorgulayan metottur.
A = {1,2,5,8,9,12} B = {1,2,5} print(A.issuperset(B)) True
A kümesi B kümesini kapsar dedik True değeri aldık çünkü B kümesi A kümesinin alt kümesidir bu yüzden True sonucu aldık aynı şekilde B kümesi için yaparsak False değerini verecektir.
Frozenset(Kısıtlanmış Küme)
Arkadaşlar biraz önce set(küme) veri türünü gördük bu frozenset veri tipi de set veri turunun kısıtlanmış halidir. Peki neden kısıtlanış onu size açıklayayım biz Python da veri tiplerini mutable(değiştirilebilir) ve immutable(değiştirilmez) olarak ayırmıştık işte bu veri tipide immutable(değiştirilemez) veri tipi dir. o yüzden kısıtlanmış küme diyoruz biz bu veri türüne ekleme, silme, değiştirme vb. işlemler yapamıyoruz. Set veri türünün kısıtlanmış hali hemen bir örnekle kullanımını göstereyim;
kisitli_kume = frozenset(["Python",3.14,5,'A']) print(kisitli_kume) frozenset({5, 3.14, 'Python', 'A'})
Peki biz bu veri tipi üzerinde değişiklik yapmaya çalışırsak ne olur? Mesela eleman bir elemanı silmeye çalışalım;
kisitli_kume.remove("Python") kisitli_kume.remove("Python") AttributeError: 'frozenset' object has no attribute 'remove'
Görüldüğü gibi hata aldık ki zaten öyle bir metodu yok sadece silme için değil değişiklik türünde(ekleme,güncelleme) gibi hiçbir metodu yok isterseniz var olan metotları yazdıralım:
['copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union']
Gördüğünüz gibi sınırlı sayıda metodu var isterseniz veri türünü de ekrana yazalım.
print(type(kisitli_kume)) <class 'frozenset'>
Bu veri tipi de bu şekilde.
Mobilhanem.com da Python dersleri serisinin bir dersin daha sonuna geldik anlamadığınız yerler veya eksik yada yanlışlar için çekinmeden iletişime geçebilirsiniz. Bir sonra ki dersimizde Python da Karakter Dizilerini ve Metotlarını göreceğiz. Bir sonraki yazıda görüşmek üzere.
Tüm Python dersleri için tıklayın
311