Python’da Veri Yapıları 2 (Setler)

Ceydanur İlhan
4 min readJul 4, 2022

--

| Önceki Bölüm: Python’da Veri Yapıları 1

Herkese yeniden merhaba!

SistersLab’in Toplum Gönüllüleri Vakfı tarafından desteklenen Women in Tech Academy proje katılımcılarından biriyim. Proje, 20–28 yaş aralığındaki 25 kadını 3 ay boyunca yazılım eğitimleriyle güçlendirerek sektörde iş gücüne katılımını hedefliyor. Projeyle ilgili daha fazla bilgiye bu linkten ulaşabilirsiniz.

Bir önceki yazımda Python’da yer alan veri yapılarından liste ve tuplelardan bahsetmiştim. Bu yazımda da set veri yapısını ele alacağım.

Set

Matematik derslerimizden de aşina olduğumuz kümelere karşılık gelen setler birden çok farklı tipte elemanı içerebilen veri yapısıdır. Bir set tanımlarken setin elemanlarını {} içerisine virgüller ile ayırarak yazarız. Set veri tipi sıralı değildir bu sebeple de elemanlara index yardımıyla erişim sağlayamayız. Setler aynı değere sahip yani duplicate olan verileri içermezler. Setler değiştirilemez yani immutabledır. Tupledan farkı burada sete yeni eleman ekleme çıkarma işlemlerini yapabiliyoruz ama setin içindeki bir elemanı değiştiremiyoruz.

Python’da boş bir set tanımlama işlemini aşağıdaki gibi gerçekleştiririz:

Aynı ve farklı veri tiplerinde elemanlar içeren setler oluşturabiliriz:

Bir liste veri yapısının tipini set veri yapısına dönüştürdüğümüzde listede yer alan duplicate verileri çıkarmış oluruz.

Bir set içerisine liste veri yapısında bir eleman eklemeye çalışırsak hata alırız. Ama bir setin içerisine tuple veri yapısında bir eleman ekleyebiliriz.

Set Elemanlarına Erişim

Bir setin elemanları üzerinde gezinmek için for döngüsünü kullanabiliriz.

if koşulu ile bir verinin sette yer alıp almadığını tespit edebiliriz:

len() metodu ile bir setin uzunluğunu bulabiliriz:

Setlere Eleman Ekleme

Bir sete eleman eklerken add() ve update() metodlarından faydalanırız.

Add

Bu komutla belirtilen sete istenilen elemanı ekleyebiliriz. Add komutunun kullanım syntaxı set_adı.add(value) şeklindedir.

Update

Sete birden çok sayıda elemanı eklemek için update komutunu kullanırız. Bu komutun kullanım syntaxı set_adı.update([value1, value2, value3]) şeklindedir.

Setlerden Eleman Silme

Bir listeden eleman silmek için birden çok yöntem vardır. Bunlar remove() , discard() , pop() , clear() ve del() komutlarıdır.

Remove

Remove komutunun kullanım syntaxı set_adı.remove(value) şeklindedir. Remove komutunu kullanırken value olarak verdiğimiz değer sette varsa o elemanı siler ama eğer yoksa hata verir.

Discard

Discard komutunun kullanım syntaxı set_adı.discard(value) şeklindedir. Discard komutunu kullanırken value olarak verdiğimiz değer sette varsa o elemanı siler yoksa hiçbir şey yapmaz.

Pop

Pop komutu setten rastgele bir elemanı silmek için kullanılır. Bu komutunun kullanım syntaxı set_adı.pop() şeklindedir.

Clear

Bu komut set içerisindeki bütün elemanları siler. Ama seti hafızada boş bir set olarak saklamaya devam eder. Clear komutunun kullanım syntaxı set_adı.clear() şeklindedir.

Del

Del komutu ile bir seti tamamen sileriz ve artık o sete erişilmez. Eğer erişmeye çalışırsak hata verir. Bu komutunun kullanım syntaxı del set_adı şeklindedir.

Set Üzerinde Kullanabileceğimiz Operatörler

  • union() -> | birleştirme
  • intersection() -> & kesişim
  • difference() -> - fark
  • symmetric_difference() -> ^ ortak eleman dışındaki elemanları alır.

Setleri Birleştirme

Setlerin Kesişimi

Setlerin Farkı

difference_update komutunu kullanarak bir setin diğer set ile farkı sonucunda elde edilen set ile güncelleyebiliriz.

Setlerde Simetrik Fark

symetric_difference_update komutu ile iki setin ortak eleman dışındaki elemanları alır ve ilk seti sadece bu elemanları içerecek şekilde günceller.

Setlerde Kopyalama İşlemi

Setlerde kopyalama işlemini üç farklı şekilde yapabiliriz:

  • = operatörü ile
  • copy() metodu ile
  • set() metodu ile

= Operatörü

Bu operatörü kullanarak bir seti başka bir sete eşitlediğimizde iki set hafızada aynı yerde depolanır ve yaptığımız işlemler her iki seti de etkiler.

Copy Metodu

Bu metodu kullanarak bir seti kopyaladığımızda yeni set hafızada başka bir yerde depolanır ve herhangi birisi üzerinde yaptığımız işlem sadece üzerinde çalıştığımız sete etki eder.

Set Metodu

Bir seti set metodu ile başka bir sete eşitlediğimizde iki set hafızada farklı alanlarda depolanır ve herhangi biri üzerinde yaptığımız değişiklik diğerini etkilemez.

Subset ve Superset

Bir a seti b seti olduğunu düşünelim eğer a setinde olan tüm elemanlar b setinin de elemanı ise bu a seti b setinin subseti yani alt seti olduğu anlamına gelir. Burada b seti de a setinin superseti yani üst seti olur.

Bir setin diğer bir setin alt seti olup olmadığını kontrol etmek için issubset() komutunu, bir setin diğer bir setin üstseti olup olmadığını kontrol etmek için ise issuperset() komutunu kullanırız. Bu komutlar boolean değer döndürürler.

Frozen Set

Python’da setler değiştirilemez olduğundan bahsetmiştim. Sete yeni eleman ekleme çıkarma işlemlerini yapabiliyorduk ama setin içindeki bir elemanı değiştiremiyorduk. Eğer sete ekleme çıkarma işlemlerinin de etki etmemesini istersen frozen setler oluşturabiliriz. Frozen setlere eleman eklemeye ya da frozen setlerden eleman silmeye çalışırsak hata verir.

Setler hakkında anlatacaklarım bu kadar. Umarım keyifle okumuşsunuzdur. Bir sonraki yazımda Python’daki son veri yapısı olan Dictionarylerden bahsedeceğim. Yeni yazımda görüşmek üzere!

--

--