-
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.
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()sset()
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)- 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)st = (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', 'ı'}
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
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
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}
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 hata 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}
- Evet geldil ş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}
- 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}
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}
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}
- 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)) == 0False
- 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
- 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}