Odak modu

Python Temel

Set

Set


  • Setleri kümeler olarak düşünebiliriz.


  • Sadece özgün değerleri tutan, içerisinde bir eleman var mı yok mu, başka bir setle hangi elemanları farklı gibi işlemleri performanslı bir şekilde yapabileceğimiz bir veri yapısıdır.


  • Dictionary'ler gibi eleman sorgusu yapmak hızlıdır. Dictionarylerde key-value çift olarak bulunduğu için aynı uzunluktaki bir setten daha fazla yer kaplar.


  • Setler indexlenemez.


  • Setler mutable'dır.


Set yaratma


s = {1,2,3,4,5}


s


{1, 2, 3, 4, 5}


s2 = {1,2,2,2,1,4,5,6}


s2


{1, 2, 4, 5, 6}


  • Boş set yaratma:


a = {}


type(a)


dict


s = set()


s


set()


l = [1,2,3,4]


s = set(l)


s


{1, 2, 3, 4}


l = [1,2,3,4,1,2]


set(l)


{1, 2, 3, 4}


# Boş bir seti {} ile yaratamayız,çünkü bu boş bir dictionary yaratmak için ayrılmış
s = {}

type(s)


Setler Sadece Özgün Değerlerden Oluşur


  • Setin içinde bir elemanı birden çok göremezsiniz.


l = [1,2,3,4,1,2]


# Sadece farklı değerlerden `s` yi oluşturacak.
s = set(l)


s


t = (1,2,3,4,1)


s = set(t)


s


{1, 2, 3, 4}


message = "Merhaba, orda mısın?"


# Strinleri kullanarak da set oluşturabiliriz.
s = set(message)


# " " (boşluk) karakterini de sayıyor.
# setler sıralı değildir.
s


{' ', ',', '?', 'M', 'a', 'b', 'd', 'e', 'h', 'm', 'n', 'o', 'r', 's', 'ı'}


len()


s = set([1,2,3,4,5])


s


{1, 2, 3, 4, 5}


len(s)


5


t = (1,2,3,3,2)


set(t)


{1, 2, 3}


len(set(t))


3


Setler Indexlenemez


s


{1, 2, 3, 4, 5}


s[0]


---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-61-c9c96910e542> in <module>
----> 1 s[0]


TypeError: 'set' object is not subscriptable


Set'e Eleman Ekleme


s = {1, 2, 3, 4, 5}


s.add(6)


s


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


# Bu kod bir error vermeyecek, ama 5 zaten sette olduğu için eklemeyecek de
s.add(5)


s


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


Set'ten Eleman Silmek


s


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


s.remove(2)


s


{1, 3, 4, 5, 6}


# add()'in aksine, remove() hata veriyor.
s.remove(9)


---------------------------------------------------------------------------

KeyError                                  Traceback (most recent call last)

<ipython-input-70-6bd3b47dfec1> in <module>
      1 # add()'in aksine, remove() hata veriyor.
----> 2 s.remove(9)


KeyError: 9


s


{1, 3, 4, 5, 6}


# Eğer silmek istediğimiz eleman yoksa hata almak istemiyorsak, discard()'ı kullanabiliriz.
s.discard(10)


s


{1, 3, 4, 5, 6}


s.add(10)


s


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


s.discard(10)


s


{1, 3, 4, 5, 6}


Difference (fark)


  • Evet geldik şimdi kümelerdeki fark konusuna. s1 kümesi ile s2 kümesinin farkına bakacağız. (s1 – s2) veya (s1 \ s2)


s1 = set([1,5,10])


s2 = set([2,5,3])


# s1 in hangi elemanları s2 den farklıdır.
s1.difference(s2)


{1, 10}


# '-' operatörü setlerde kullanıldığında bize farkı verir.
s1 - s2


{1, 10}


# s2 nin hangi elemanları s1 den farklıdır
s2.difference(s1)


{2, 3}


s2 - s1


{2, 3}



Symmetric Difference


  • s1'in s2 den farkı ile s2'nin s1 den farkının birleşimi. (s1 \ s2) U (s2 \ s1) - > s1 U s2 - (s1 n s2)


U -> Birleşim

n -> kesişim


s1


{1, 5, 10}


s2


{2, 3, 5}


# (s1 \ s2) U (s2 \ s1)  - > A U B - (A n B)
s1.symmetric_difference(s2)


{1, 2, 3, 10}


# (s2 \ s1) U (s1 \ s2) same as (s1 \ s2) U (s2 \ s1)
s2.symmetric_difference(s1)


{1, 2, 3, 10}


Intersection (kesişim)


s1


{1, 5, 10}


s2


{2, 3, 5}


s1.intersection(s2)


{5}


s2.intersection(s1)


{5}


# `&` operatörü setlere uygulanınca kesişim olur
s1 & s2


{5}


# Bu işlem kesişim ile aynı sonucu verecek
s1 - (s1-s2)


{5}


s1


{1, 5, 10}


# kesişim yapıp s1 in değerini buna günceller
s1.intersection_update(s2) # s1 = s1.intersection(s2)


s1


{5}


Union (Birleşim)


s1 = set([1, 5, 10])


s1


{1, 5, 10}


s2


{2, 3, 5}


s1.union(s2)


{1, 2, 3, 5, 10}


s1


{1, 5, 10}


s1.union(s1)


{1, 5, 10}


Disjoint Sets

  • s1 ∩ s2 = Ø olup olmadığını kontrol eder
s1


{1, 5, 10}


s2


{2, 3, 5}


s3 = set([12,11])


s3


{11, 12}


# s1 ∩ s2 ≠  Ø(boş küme) değil, o yüzden False döner
s1.isdisjoint(s2) 


False


s2.isdisjoint(s1) 


False


s1.isdisjoint(s3) 


True


len(s1.intersection(s2)) == 0


False


Subset (Alt küme)

  • s1.issubset(s2), s1'in s2'nin alt kümesi olup olmadığını kontrol eder
s1


{1, 5, 10}


s2


{2, 3, 5}


s1.issubset(s2)


False


s3 = set([2,5])


s3


{2, 5}


s3.issubset(s2)


True


Superset (üst küme)

  • s2.issuperset(s3) s2'nin s3'ün üst kümesi olup olmadığını sorgular
s1


{1, 5, 10}


s2


{2, 3, 5}


s3


{2, 5}


s2.issuperset(s3)


True


s2


{2, 3, 5}
Background Pattern
Birlikte öğrenelim

Sektörde en çok aranan yazılım becerilerini kazan

Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.

Yunus Emre Kabakcı

Patika+ mezunu

Patika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,

3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!


“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“

Test

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!