1378

Python ile Sıfırdan İleri Seviye Python Programlama

Python Sets

Pytonda collection veri yapılarından biri olan set nedir ve nasıl kullanılır?



Python Set

Pythonda set listeleri, list' e benzer ancak fark olarak set içindeki elemanlar sıralanamaz (sort) ve indekslenemez yani set elemanlarına 0,1 şeklinde indeks numaraları ile ulaşamayız. Dolayısıyla set 'e eklediğimiz bir elemanın set listesi içinde hangi sırada olacağını bilemeyiz. Ayrıca set içerisindeki elemanlar tekrarlayamaz, her bir elemandan sadece bir tane olmalıdır, tekrarlayanlar silinir.

Pythonda set oluşturmak için süslü parantezler kullanırız. 

Örnek

fruits = {"banana", "grape", "cherry"}
print(fruits)  # {"grape", "banana", "cherry"}

Gördüğünüz gibi listeyi ekrana yazdırdığımızda liste elemanlarının yeri karışık geliyor. Hatta uygulamayı her çalıştırdığınızda bu sıra değişecektir.

Set Elemanlarına Erişim

Set elemanlarına indeks numarası verilmediğinden dolayı indeks numarasına göre elemanlara ulaşamayız. Ancak bir döngü yardımıyla ulaşabiliriz. 

Örnek

fruits = {"banana", "grape", "cherry"}
for fruit in fruits:
    print(fruit)

Çıktı: 
grape
banana
cherry

Ya da bir elemanın set listesinin bir elemanı olup olmadığını kontrol etmek için in operatörü kullanabiliriz.

Örnek

fruits = {"banana", "grape", "cherry"}
print("banana" in fruits) # True

"banana" fruits listesinin bir elemanı olduğundan ekrana True değeri gelir.

Set Elemanlarını Güncelleme

Set listesi oluşturulduktan sonra her hangi bir elemanını güncelleyemeyiz ancak liste üzerine yeni eleman ekleyebiliriz.

Set' e Yeni Eleman Ekleme

Set listesine tek bir eleman eklemek için add() metodunu, birden fazla eleman eklemek için ise update() metodunu kullanabiliriz.

Örnek

fruits = {"banana", "grape", "cherry"}
fruits.add("orange")  # {"grape", "banana","orange","cherry"}

Set' e birden fazla eleman eklemek için ise;

Örnek

fruits = {"banana", "grape", "cherry"}
fruits.update(["orange", "mango"])  # {"orange", "banana", "mango", "grape", "cherry"}

Set Elemanlarını Silme

Set' den bir eleman silmek için remove() ya da discard() metodu kullanılabilir.

Örnek

fruits = {"banana", "grape", "cherry"}
fruits.remove("grape")  # {"banana","cherry"}

** Eğer ki silmek istediğimiz eleman set içerisinde yok ise bu durumda geriye bir exception yani hata objesi döndürülür. 

Örnek

fruits = {"banana", "grape", "cherry"}
fruits.discard("grape")  # {"banana","cherry"}

remove() metodundan farklı olarak discard() metodu ile silmek istediğimiz değer set içerisinde yoksa bir exception yani hata objesi döndürülmez.

** Exception için Error Handling dersine bakınız.

Bir eleman silmek için ayrıca pop() metodunuda kullanabiliriz ancak set listeleri indekslenmediğinden dolayı pop() ile sildiğimiz bir elemanın hangisi olacağını bilemeyiz. Dolayısıyla uygulamayı her çalıştırdığımızda set listesinin son elemanı silinir ancak hangi eleman olacağını bilemeyiz.

Örnek

fruits = {"banana", "grape", "cherry"}
fruits.pop()  # {"banana","cherry"}

clear() metodu ile set elemanlarının hepsini silebiliriz.

Örnek

fruits = {"banana", "grape", "cherry"}
fruits.clear()  # { }

del komutu ile set listesinin referansını sileriz dolayısıyla set ' e tekrar ulaşmak istediğimizde hata alırız.

Örnek

fruits= ["banana", "grape", "cherry"] 
del fruits
print(fruits) # NameError: name 'fruits' is not defined

Birden Fazla Set Listesini Birleştirme

Birden fazla set listesini birleştirmek için kullanabileceğimiz union() ve update() metotları vardır.

Örnek

set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}

set3 = set1.union(set2)
print(set3)  # {"a",1,3,2,"b","c"}

union() metodu ile birleştirilen set' ler yeni bir set objesiyle geri döner. (set3)

Örnek

set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}

set1.update(set2)
print(set1) # {"a",1,3,2,"b","c"}

update() metodu ile bir set'i diğer set içerisine eklemiş oluyoruz yeni bir set objesi oluşturulmaz. (set1)