Python ile “Set” (Küme) Kullanımı
Python programlama dilinde “set” (kümeler), gömülü halde bulunan “List“, “Tuple” ve “Dictionary” ile beraber verileri depolamak için kullanılan dört koleksiyon tipinden biridir. Biz bu yazımızda, Python’daki kümelerin, yani “set” veri tipinin ne olduğunu, nasıl oluşturulup kullanıldığını adım adım inceleyeceğiz.
Python’da “Set”
Python’da “set“, benzersiz elemanların sırasız bir şekilde oluşturduğu koleksiyon yapısıdır. “List” ve “tuple” koleksiyon yapılarından farklı olarak indekslenemezler. Bu da onları, sahip oldukları elemanların sıralı bir şekilde dizilmesini önler. Haliyle, hangi elemanın hangi sırada olduğu asla bilinemez. Zaten bu tanım, matematikteki kümelere ait bir özellik olup çalışma mantığını buradan almıştır. Zira matematik derslerinde öğrendiğimiz üzere, kümeler aynı elemandan sadece bir tane bulunabilir.
Python’da “set” koleksiyonunu tanımlamak için küme parantezlerinden ({}
) yararlanırız. Her bir eleman birbirlerinden virgül (,
) ile ayrılır.
Farklı meyve isimlerini “set” koleksiyonu içinde saklamak istediğimizi düşünelim. Bu örneği aşağıdaki gibi yazabiliriz:
1 |
meyveler = {"elma", "muz", "portakal"} |
Bir “set” oluşturduğumuzda, içine yazılan elemanların sırası belirli değildir ve bu sıra her çalıştırdığımızda değişebilmektedir. Bunun nedeni ise iç yapısının tasarımıyla ilgilidir; çünkü set’lerin ana amacı elemanların hızlı bir şekilde aranabilmesi ve eşsiz olmasıdır, sıralı olması değil.
Haliyle “set” içerisindeki bir elemana indeksle ulaşmaya çalıştığımızda TypeError
hatası alırız. Yani aşağıdaki gibi bir kod kullanımı hatalı olacaktır:
1 2 |
meyveler = {"elma", "muz", "portakal"} print(meyveler[0]) |
Eğer “set” içerisinde bir elemanın olup olmadığını kontrol etmek istersek in
anahtar kelimesinden faydalanırız. Bakınız:
1 2 |
if "elma" in meyveler: print("Elma meyve setinde bulunmaktadır.") |
Bu kod, “elma”nın meyveler
set’inde olup olmadığını kontrol eder ve eğer varsa ekrana bir mesaj yazdırır. “Peki hangi durumlarda kullanabiliriz?” Şöyle bir senaryo ortamında “set” yapısını kullanmak oldukça faydalı olacaktır:
Diyelim ki, bir etkinlik düzenliyorsunuz ve katılmak isteyen kişilerin e-posta adreslerini topluyorsunuz. İki ayrı kaynak üzerinden e-posta adresleri topladınız ve bu e-posta adreslerini birleştirip tek bir davetiye listesi oluşturmak istiyorsunuz. Ancak bazı kişiler her iki kaynaktan da başvuru yapmış olabilir. Bu durumda, tekrar eden e-posta adreslerini tek bir defa listelemek istersiniz.
1 2 3 4 5 6 7 8 9 10 |
# İki farklı kaynaktan toplanan e-posta listeleri: # Tekrar eden e-postaları kaldırmak için set kullanımı: birlesik_liste = set(kaynak1 + kaynak2) print(birlesik_liste) #Çıktı: {'[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]'} |
“Set” kullanarak, tekrar eden öğeleri hızlı bir şekilde filtreleyebilir ve bu tip işlemleri kolaylıkla gerçekleştirebilirsiniz.
Aşağıdaki tabloda list, tuple ve set arasındaki farkları gösteren özellikler derlenmiştir. Bakınız:
Özellik | List | Tuple | Set |
---|---|---|---|
Tanımlama | [ ] | ( ) | { } |
Sıralı | Evet | Evet | Hayır |
Değiştirilebilir | Evet | Hayır | Evet (ama set içindeki tek bir elemanı doğrudan değiştiremezsiniz) |
Eleman Tekrarı | Evet | Evet | Hayır |
Index Erişimi | Evet | Evet | Hayır |
“Set” Tipi Koleksiyonlara Nesne Eklemek
Python’da “set” tipi koleksiyonlara eleman eklemek için add() metodu kullanılabilir. Eğer birden fazla eleman eklemek istenirse update([ ]) metodundan faydalanılır:
1 2 3 4 5 6 7 |
ornekSet = {"kalem", "silgi", "açkı"} ornekSet.add("sözlük") print(ornekSet) #çıktı: {'kalem', 'sözlük', 'silgi', 'açkı'} set_son = {"elma", "muz", "kiraz"} set_son.update(["portakal", "mango", "üzüm"]) print(set_son) #çıktı: {'muz', 'elma', 'üzüm', 'kiraz', 'portakal', 'mango'} |
Python’da “Set” Birleştirmek
Python’da “set” koleksiyonlarını birleştirmek mümkündür. Bu işlemleri gerçekleştirmek için aşağıdaki yöntemlerden biri kullanılır:
- union() metodu veya
|
işareti: İki set’in birleşimini döndürür, ancak orijinal set’leri değiştirmez.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#union() metodu kullanımı: set1 = {1, 2, 3} set2 = {3, 4, 5} birlesik_set = set1.union(set2) print(birlesik_set) # Çıktı: {1, 2, 3, 4, 5} # | işareti kullanımı: set1 = {1, 2, 3} set2 = {3, 4, 5} birlesik_set = set1 | set2 print(birlesik_set) # Çıktı: {1, 2, 3, 4, 5} |
- update() metodu veya
|=
işareti: İlk set’i, diğer set ile birleştirerek günceller.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#update() metodu kullanımı: set1 = {1, 2, 3} set2 = {3, 4, 5} set1.update(set2) print(set1) # Çıktı: {1, 2, 3, 4, 5} #|= işareti kullanımı: set1 = {1, 2, 3} set2 = {3, 4, 5} set1 |= set2 print(set1) # Çıktı: {1, 2, 3, 4, 5} |
Bu yöntemlerle iki set’i birleştirebilirsiniz. Ancak unutulmamalıdır ki set’ler benzersiz öğelere sahip olduğu için birleştirme işlemi sonucunda tekrar eden öğeler sadece bir defa yer alır.
Python “Set” Metotları
Metot | Görevi |
---|---|
add() | Kümeye bir eleman ekler |
clear() | Kümedeki tüm öğeleri siler |
copy() | Setin bir kopyasını döndürür |
difference() | İki veya daha fazla küme arasındaki farkı içeren bir küme döndürür |
difference_update() | Bu kümedeki, ayrıca belirtilen başka bir kümeye dahil olan elamanı kaldırır |
discard() | Belirtilen elemanı kaldırır |
intersection() | Diğer iki kümenin kesişimi olan bir küme döndürür |
intersection_update() | Bu setteki, belirtilen diğer set(ler)de bulunmayan elamanı kaldırır. |
isdisjoint() | İki kümenin kesişimi olup olmadığını döndürür |
issubset() | Başka bir kümenin bu kümeyi içerip içermediğini döndürür |
issuperset() | Bu kümenin başka bir küme içerip içermediğini döndürür |
pop() | Kümeden bir elemanı kaldırır |
remove() | Belirtilen elemanı kaldırır |
symmetric_difference() | İki kümenin simetrik farklarına sahip bir küme döndürür |
symmetric_difference_update() | bu kümeden ve diğerinden simetrik farkları ekler |
union() | Kümelerin birleşimini içeren bir küme döndürür |
update() | Kümelerin elemanlarını günceller |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
print ("----------add()----------") #kümeye eleman ekler fruits = {"apple", "banana", "cherry"} fruits.add("orange") print(fruits) print ("----------clear()----------") #kümeyi siler fruits = {"apple", "banana", "cherry"} fruits.clear() print(fruits) print ("----------copy()----------") #kümeyi kopyalar fruits = {"apple", "banana", "cherry"} x = fruits.copy() print(x) print ("----------difference()----------") #ayrık kümeyi bulur x = {"apple", "banana", "cherry"} y = {"google", "microsoft", "apple"} z = x.difference(y) print(z) print ("----------difference_update()----------") #ayrık küme elemanları kümenin yerine günceller x = {"apple", "banana", "cherry"} y = {"google", "microsoft", "apple"} x.difference_update(y) print(x) print ("----------discard()----------") #belirtilen elamanı kümeden çıkartır fruits = {"apple", "banana", "cherry"} fruits.discard("banana") print(fruits) print ("----------intersection()----------") #kesişim elemanınını bulur. x = {"apple", "banana", "cherry"} y = {"google", "microsoft", "apple"} z = x.intersection(y) print(z) #kesişim elemanı gösterilir print ("----------intersection_update()----------") #kesişim elemanınını ana küme olarak günceller. x = {"apple", "banana", "cherry"} y = {"google", "microsoft", "apple"} x.intersection_update(y) print(x) print ("----------isdisjoint()----------") #her iki kümede de ortak eleman yoksa True döndürür, aksi takdirde False döndürür. x = {"apple", "banana", "cherry"} y = {"google", "microsoft", "facebook"} z = x.isdisjoint(y) print(z) print ("----------pop()----------") #kümeden rastgele bir elemanı kaldırır. fruits = {"apple", "banana", "cherry"} fruits.pop() print(fruits) print ("----------remove()----------") #belirtilen elemanı kümeden kaldırır. fruits = {"apple", "banana", "cherry"} fruits.remove("banana") print(fruits) print ("----------union()----------") #yinelenenlerin hariç tutulduğu birleşim kümesini yazar. x = {"apple", "banana", "cherry"} y = {"google", "microsoft", "apple"} z = x.union(y) print(z) |