Site Loader

Merhaba 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 Set(Kümeler) hem değiştirilebilir hem değiştirilemez veri türünü işleyeceğiz.

Set(Küme) Nedir ?

Set(Küme) yapıları içerisinde ListeTuple ve Sözlük gibi veri tiplerini barındırabilen, değiştirilebilir bir veri yapısıdır. Set(Küme) yapılarının Liste yapılarından farkı sırasız olmasıdır. Yani elemanlarına indeks işlemiyle erişilemez.

Set(Küme) veri yapılarını Matematik Dersindeki Kümeler olarak düşünebiliriz. O kümelerle yapabildiğiniz birleşim, kesişim gibi pek çok işlemi Set(Küme) yapısıyla da yapabilirsiniz. Matematik derslerinde gördüğümüz kümelerde bir elemandan bir tane bulunabiliyordu. Bu özellik Set(Küme) yapıları için de geçerli bir durum.

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.

Tüm Python dersleri için tıklayın

Set(Küme) Kullanımı ?

Bir Set oluşturmak temelde Liste yapısı oluşturmak gibidir. Ancak Set yapıları süslü parantez ile gösterilirler. Hemen bir tane oluşturalım.

Set= {"Python",'Java',"C++"}

Gördüğünüz gibi set(küme) yapısını oluşturmak oldukça basittir.

Ancak burada dikkat etmemiz gereken önemli bir nokta var. Eğer boş bir küme tanımlarsanız Python bunu bir Sözlük (Dictionary) yapısı olarak algılar. Böyle bir durumla karşılaşmamak için altta gösterdiğim tanımlamayı kullanabiliriz.

Set=set()

Bir Set yapısında kaç eleman olduğunu bulmak için daha önce görmüş olduğumuz bir fonksiyon olan –
len( ) 
fonksiyonunu kullanırız.

Set={1,2,3,4,5,6,7,7,6}
print(len(Set))

Bu örnekte sonucun neden “7” çıktığını soruyor olabilirsiniz. Yukarıda açıkladığım gibi Set(Küme) yapılarında bir elemandan bir tane bulunabilir. Eğer siz bu kurala uymayıp aynı elemandan birkaç tane yazarsanız Python aynı elemanları tek bir eleman gibi görüp çıktıyı size o şekilde verir.

Bir elemanın Set(Küme) yapısı içerisinde olup olmadığını sorgulamak için “x in set” tersi için de “x not in set” fonksiyonu kullanılabilir.

Set={1,2,3,4,5,6,7}

print(1 in Set,7 in Set)

Çıktı:

True True

Set yapıları ile “for x in set” fonksiyonu ile döngüler kurulabilir. Hemen bir örnek döngü kuralım.

Set={1,2,3,4,5,6,7}
for x in Set:
    print(x,x**3)

Çıktı:

1 1
2 8
3 27
4 64
5 125
6 216
7 343

Set Karşılaştırmaları

Set yapılarının Matematik’de kullanılan Kümeler’e çok benzediğini söylemiştik. Bu yapılar ile matematikte yapılan pek çok şeyi yapabiliriz.

Kapsama

Set yapılarında kapsama işlemi için “>” ve “> =” kullanılır.

Matematik={1,2,3}
Kesir={1,2,3,5}
print(Matematik>Kesir)

Çıktı:

False

Birleşim

İki Set yapısının birleşimini “|” ile gösteririz.

asya={'Azerbaycan', 'Ürdün', 'Güney Kore', 'Kuzey Kore'}
avrupa={"Almanya","İtalya","Fransa","Karadağ"}
print(asya|avrupa)

Çıktı:

{'Karadağ', 'Güney Kore', 'Azerbaycan', 'Kuzey Kore', 'Ürdün', 'Fransa', 'Almanya', 'İtalya'}

Kesişim

İki Set yapısının kesişimini “&”ile gösteririz.

asya={'Azerbaycan', 'Ürdün', 'Güney Kore', 'Kuzey Kore'}
avrupa={"Almanya","İtalya","Fransa","Karadağ"}
print(asya & avrupa)

Çıktı:

set()

Burada diyeceksiniz neden böyle bir şey ekrana geldi ortak kesişim kümesinde herhangi bir eleman olmadığı için boş bir küme gösteriyor.

Fark

Fark işlemi A Kümesinde olup B Kümesinde olmayanları verir.

asya={'Azerbaycan', 'Ürdün', 'Güney Kore', 'Kuzey Kore'}
avrupa={"Almanya","İtalya","Fransa","Karadağ"}
print(asya-avrupa)

Burada ekrana gelecek olanlar asya ülkeleri olacak çünkü asya-avrupa yaptık. Eğer burada tam tersi avrupa-asya yaparsanız ekrana avrupa ülkeleri gelecektir.
Çıktı:

{'Azerbaycan', 'Kuzey Kore', 'Ürdün', 'Güney Kore'}

Simetrik Fark

Simetrik Fark işlemi yalnızca A ya da yalnızca B Kümesinde olan ama her ikisinde birden olmayan elemanları verir.

asya={'Azerbaycan', 'Ürdün', 'Güney Kore', 'Kuzey Kore','İtalya'}
avrupa={"Almanya","İtalya","Fransa","Karadağ"}
print(asya^avrupa)

Çıktı:

{'Kuzey Kore', 'Karadağ', 'Ürdün', 'Azerbaycan', 'Fransa', 'Almanya', 'Güney Kore'}

Burada fark etmişsinizdir ‘İtalya’ iki kümede de var ama çıktıda gözükmedi çünkü yalnız birinde olan elemanları ekrana getirdi.

Temel Set Metotları

Liste ve Tuple yapılarında olduğu gibi Set yapılarında da bazı metotlar bulunmaktadır. Şimdi bu metotları öğrenelim.

Set Metotları

  • add ( )
  • clear ( )
  • update ( )
  • remove( )
  • pop ( )
  • union ( )
  • ıntersection ( )
  • difference ( )
  • Intersection_update Metodu

  • Issubset Metodu

Add Metodu

 Bu metot yeni elemanlar eklememize yardımcı oluyor.

asya={'Azerbaycan', 'Ürdün', 'Güney Kore', 'Kuzey Kore'}
asya.add('Türkiye')
print(asya)

Çıktı:

{'Güney Kore', 'Türkiye', 'Azerbaycan', 'Ürdün', 'Kuzey Kore'}

Clear Metodu

Bu metot Set yapısını temizler ve ilk boş haline döndürür.

asya={'Azerbaycan', 'Ürdün', 'Güney Kore', 'Kuzey Kore'}
asya.clear()
print(asya)

Çıktı:

set()

Update Metodu

Bu metot Set(Küme) yapısının güncellenmesini sağlar.

asya={'Azerbaycan', 'Ürdün', 'Güney Kore', 'Kuzey Kore'}
avrupa={"Almanya","İtalya","Fransa","Karadağ"}
asya.update(avrupa)
print(asya)

Çıktı:

{'Karadağ', 'Kuzey Kore', 'Güney Kore', 'Azerbaycan', 'Ürdün', 'Fransa', 'İtalya', 'Almanya'}

Remove Metodu

Bu metot seçtiğimiz elemanların silmesine yardımcı olur.

asya={'Azerbaycan', 'Ürdün', 'Güney Kore', 'Kuzey Kore'}
asya.remove('Ürdün')
print(asya)

Çıktı:

{'Güney Kore', 'Azerbaycan', 'Kuzey Kore'}

Pop Metodu

Set(küme) yapımızdaki ilk elemanı silmeye yarayan metot. Kullanımı aşağıdaki gibidir.

avrupa={"Almanya","İtalya","Fransa","Karadağ"}
avrupa.pop()
print(avrupa)

Çıktı:

{'Fransa', 'Karadağ', 'İtalya'}

Şimdiye kadar gördüklerimiz bir set(küme) üzeinde yapılan işlemlerdi. Şimdi birkaç tane küme üzerinde nasıl işlem yapabiliriz onlara biraz değinelim.

Union Metodu

İki Set(küme) yapısının birleşimini sağlayan metotdur.

A = {1, 2, 3, 4, 9}
B = {3, 4, 5, 6, 10}

print(A.union(B))

Çıktı:

{1, 2, 3, 4, 5, 6, 9, 10}

Konunun başında da değindiğimiz bir nokta vardı. Kümelerde birden fazla aynı eleman olabilir yalnız ekrana basarken sadece bir tane olarak görür.Şimdi 3 kümenin kesişimi nasıl olur onu gösterelim .

A = {1, 2, 3, 4, 9} 
B = {3, 4, 5, 6, 10}
C = {4, 7, 8, 9, 10}
print(A.union(B.union(C)))

Çıktı:

{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

Burada ek olarak çıktıda gördüğünüz gibi 7,8 sayıları eklendi.

Intersection Metodu

İki Set(küme) yapısının kesişimini sağlayan metotdur.

A = {1, 2, 3, 4, 9}
B = {3, 4, 5, 6, 10}
print(A.intersection(B))

Çıktı:

{3, 4}

Difference Metodu

İki Set(küme) yapısının farkını bulmaya yarayan metotdur.

A = {1, 2, 3, 4, 9}
B = {3, 4, 5, 6, 10}
print(A.difference(B))

Çıktı:

{1, 2, 9}

Bu iki kümenin farkları bunlardır. Burada da isterseniz 3 kümenin kesişimini alabilirsiniz bunu size bırakıyorum yapamazsanız aşağıda belirtebilirsiniz.

Intersection_update Metodu

Bu metot da intersection metodu gibi iki metodun kesişimini alır ve güncelleme işlemini yapar.

A = {1, 2, 3, 4, 9}
B = {3, 4, 5, 6, 10}
A.intersection_update(B)
print(A)

Çıktı:

{3, 4}

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))

Çıktı:

True

Biz burada B kümesi A kümesinin Alt kümesi mi şeklinde bir sorgu yapmış olduk. Konuyu Çok uzatmak istemiyorum bir kaç tane kullanabileceğiniz metot kaldı onların kullanımları benzer şekildedir. Eğer yapamayan olursa aşağıda belirtebilir:)

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")

Çıktı:

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 tipini de böylece görmüş olduk.

Pythonearh.com   İle Python Eğitim serisinin bu dersinde sizlerle Python Set( Küme) ve Frozenset (Kısıtlanmış Küme) gördük. Anlamadığınız noktalar veya eksik gördüğünüz yerleri belirte bilirsiniz umarım yararlı bir ders olmuştur. Bir sonraki dersimizde görüşmek üzere

Sağlıcakla 🙂

 

 

 

 

 

Post Author: Sadık Ortaoglan

computer enginering

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir