08 09
Python’da bir set nesnesi küme parantezi ile oluşturulur, s={10, 20, 30 } ve küme elemanları arasında sırasal bir ilişki yoktur, yani bir indis umarası ile erişilemezler. Kümeye eleman yaptığınız değerleri listelemek üzere gösterirken sizin verdiğiniz sıraya göre de gösterme garantileri yoktur. Python kümeleri arka planda hash tablosu biçiminde tutarlar. özetlemek gerekirse set nesneleri spesifik bir veriye erişim için kullanışan veri yapıları değildir. Set nesneleri mutable veri yapıladır.
- Bir eleman set’in içinde var mı diye in ve not in operatörlerini kullanarak kontrol edebilirsiniz. In ve not in operatörleri set veri yapısında diğer veri yapılarına göre çok çok hızlı çalışır. Örn:1 000 000 veri için yaklaşık 20 sorguda bunun cevabını size söyleyebilir.
- Bir küme birbirinden farklı elemanlardan oluşan topluluktur. Bir kümeye aynı elemanı eklemeye çalışırsanız o elemanı eklemez, ekleme isteğinize bir hata da döndürmez. Yani mükerrer verileri atmak için küme yapıları çok kullanılır.
- set() fonksiyonu ile bir küme nesnesi yaratabilirsiniz, arguman olarak ise iterable bir nesne alır.
- Boş bir set { } bu şekilde oluşturulmuyor sebebi sözlük dediğimiz bir veri yapısı var, bu veri yapısıda { } küme parantezi kullandığından ve daha çok kullanıldığından bu hakkı ona verilmiştir.
- Her nesne kümenin elemanı yapılamaz, eğer bir nesne kümenin elemanı olacaksa o elemanın hashable olması gerekir, bu anlamda string, int, float hashlanebilir nesnelerken, listeler hashable değildir. Listenin elemanı bir set olabilir ama, set’in elemanı bir liste olamaz.
- Kümelerin kendiside hashable değildir, bu sebeple bir set’in elemanı da set(küme) olamaz.
- dir(set) yazdığımızda set veri yapısının tüm methodlarını görebiliriz.
Set sınıfının operatör methodlar
- a.issubset(b) / a<=b true-false döndürür, alt küpe için sorgulanır. methodun parametresi iterable herhangi bir nesne olabilir. Matematiksel gösterimde iterable nesne olamaz.
- a.issuperset(b) / a>=b olarak da gösterilir, a kümesi b’nin tüm elemanlarını kapsıyor mu, süper alt küme için kullanılır.
- Is proper subset bunun methodu yoktur / a < b
- Is proper super set bunun methodu yoktur / a > b
- a.intersection(b) / a&b kesişim işlemi için kullanılır. Burada yeni bir nesne yaratılarak kesişim sonucunda verilen nesneleri bulur.
- a.union(b) / a | b birleşim için kullanılan union bir methodu da var.
- == ve != değişdir operatörleride iki kümenin aynı elemanlardan oluşup oluşmadığı kontrolü için kullanılabilir.
- Fark için a.difference(b) şeklinde method ile kullanılabilir, ya da matematiksek gösterimi ile a-b de kullanılmaktadır.
- a.symmetric_diffrance(b) / a^b şeklinde kullanarak birbirlerinde olmayan nesneleri bulmak için kullandığımız method bulunmaktadır.
- Bir sete yeni bir eleman ekleyeceksek bunu .add() methodunu kullanmaktayız. Tek bir nesne ekler,
- update() methodu iterable bir nesne alır ve nesnenin tüm elemanlarını gezerek ekler.
- a.intersection_update(b) burada a nesnesini b nesnesi ile kesiştiğinde elde edilen sonuç haline getiriyor. Bu methodun diğer yöntemlerden farkı a nesnesinin referans ettiği değer değişmez.
- a.remove() remove methodu parametre olarak aranacak ürünü vermeniz gerekiyor, bulur ve siler. Burada eğer nesneyi bulamazsa hata döndürür. Remove kullanacaksak önce var mı diye bakıp sonra silmek gerekir.
- a.discard() bu method’da set içindeki nesneleri bulur ve yine siler fakat farklı olarak burada eğer nesne bulunamazsa hata döndürmez.
- a.clear() methodu set içerisindeki tüm elemanları silmekte kullanılır.
- a.isdisjoin(b) methodu kümelerin birbirine üye olup olmadığını true ve false değeri döndürerek kontrol etmemize yarayan bir methoddur.
- a.copy() methodu ile bir set sınıfının özdeş bir kopyası oluşturmak için kullanılır, yeni çıkan set nesnenin nesne adresleri birbirinde farklıdır. Bu işlemde sığ kopyalama yani referans kopyalaması şeklinde gerçekleştirilmektedir.
Frozen Set nesnesi oluşturma
Frozen set inmutable bir nesnedir. Update edici methodlar bu küme içerisinde yoktur. Bir forzenset nesnesi aşağıdaki gibi oluşturulur. Parametre olarak dolaşılabilir bir nesne vermeniz gerekir.
- fs=frozenset([1,3,6,7,8,11])
- type(fs) —> <class ‘frozen set’>
frozenset nesnesi bir set nesnesine parametre olabilir. Frozen set ile set nesneleri kesişim birleşim fark gibi işlemlere sokulabilir, bu işlemlerin sonucunda oluşan nesne soldaki nesnenin türünde olacaktır.