Veri Bilimi İçin Python Notları-9: Python’da Set Değişkeni

V

İçindekiler

.

1. Python’da Liste Tipi Değişkenler: Set

Liste tipi değişkenlerin üçüncüsü “set” değişkenleri süslü parantezlerle “{}” ifade edilir. Set değişkenlerinin elemanları aşağıda gösterildiği gibi virgül ile ayrılır. Aşağıdaki kod her çalıştırıldığında yazdırılan set değişkeni elemanlarının (Python sürümüne göre değişmekle birlikte) sıralamasının değiştiğini görebilirsiniz.

mySet = {"Volvo", "Opel", "Seat"}
print(mySet) #Sonuç: {'Opel', 'Volvo', 'Seat'}

Set değişkenlerinin elemanları tekrar sıralanamaz (unordered), tekrar edemez (unique) ve indekslenemez.

# Yorum satırlarını kademeli olarak kaldırınız ve hataları görmek için bölüm bazında çalıştırınız.
'''
#Bu bölümde hata göreceksiniz (sıralanamaz)
mySet = {"Volvo", "Opel", "Seat"}
mySet.sort()
print(mySet) #Sonuç: AttributeError: 'set' object has no attribute 'sort'
'''

'''
#Bu bölümde hata göreceksiniz (değiştirilemez)
mySet = {"Volvo", "Opel", "Seat"}
mySet[2] = "Chevrolet"
print("Bölüm 1:", mySet) #Sonuç: TypeError: 'set' object does not support item assignment
'''

'''
#Bu bölümde hata göreceksiniz (indekslenemez)
mySet = {"Volvo", "Opel", "Seat", "Volvo"}
print(mySet[0]) #Sonuç: TypeError: 'set' object is not subscriptable
'''

#Set değişkeninin elemanları aynı olamaz. Hata vermez, ancak tekrar eden elemanlar görmezden gelinir; yani konsola yazdırılmaz.
mySet = {"Volvo", "Opel", "Seat", "Volvo"}
print(mySet) #Sonuç: {'Opel', 'Volvo', 'Seat'}  

Bir set değişkeninin eleman sayısı “len” metodu ile elde edilebilir.

mySet = {"Volvo", "Opel", "Seat"}
print(len(mySet)) #Sonuç: 3
  

Bir set değişkeni birbirinden farklı tipte veriler içerebilir.

mySet = {"Volvo", 2006, 1.6, True}
print(mySet) #Sonuç: {1.6, 'Volvo', 2006, True}

Set değişkeni “set” metodu ile iç içe çift parantez kullanılarak da oluşturulabilir.

mySet = set(("Volvo", 2006, 1.6, True))
print(mySet) #Sonuç: {1.6, 'Volvo', 2006, True}

String tipte bir verinin tekrar etmeyen karakterleri aşağıda gösterildiği gibi birer set elamanı olabilir.

#Set elemanları tekrar edemez. Yani aynı elemandan birden fazla olamaz.
mySet = set("Volvo")
print(mySet) #Sonuç: {'l', 'v', 'V', 'o'} # Python'da büyük-küçük harf hassasiyeti olduğu için "v" ve "V" farklı karakterler olarak algılandı. 

print()

#ya da iç içe çift parantez de kullanabilirsiniz.
mySet = set(("Volvo"))
print(mySet) #Sonuç: {'l', 'v', 'V', 'o'}
  

2. Python’da Set Elemanlarına Erişmek

Set değişkeninden herhangi bir elemana erişmek için (yukarıda bahsedildiği gibi) indeks numaraları kullanılamaz.

#Bir hata alacaksınız.
mySet = {"Volvo", 2006, 1.6, True}
print(mySet[0]) #Sonuç: TypeError: 'set' object is not subscriptable
  

Ancak aşağıda gösterildiği gibi “for” döngüsü “in” metodu ile kombinlenerek set değişkeninin elamanlarına erişilebilir.

mySet = {"Volvo", 2006, 1.6, True}
for x in mySet:
    print(x)
#Sonuç: Set değişkeninin indeks değişkenliği sebebiyle sonuçların sırasında farklılık olabilir.
#1.6
#Volvo
#2006
#True
  

3. Python’da Bir Değeri Set Elemanları İçinde Kontrol Etmek

Bir değeri/elemanı set değişkeninin elemanları içinde bulunup bulunmadığını kontrol etmek için “if” koşulu ile birlikte “in” metodu kullanılabilir.

mySet = {"Volvo", 2006, 1.6, True}
x = 1.6
if x in mySet:
    print("Evet,", x, "mySet değişkeninin bir elemanıdır.") # Sonuç: Evet, 1.6 mySet değişkeninin bir elemanıdır.
else:
    print("Hayır,", x, "mySet değişkeninin bir elemanı değildir.")

print("___________\n")

mySet = {"Volvo", 2006, 1.6, True}
x = "Chevrolet"
if x in mySet:
    print("Evet,", x, "mySet değişkeninin bir elemanıdır.")
else:
    print("Hayır,", x, "mySet değişkeninin bir elemanı değildir.")  # Sonuç: Hayır, Chevrolet mySet değişkeninin bir elemanı değildir.
  

4. Python’da Set Elemanlarını Değiştirmek

Daha önce bahsedildiği gibi bir set değişkeninin elemanı başka bir eleman ile değiştirilemez. Ancak aşağıda gösterildiği gibi set değişkeni önce list değişkenine çevrilir ve değişiklik yapıldıktan sonra list değişkeni tekrar set değişkenine dönüştürülür. Böylece dolaylı da olsa set nesnesinin elemanları değiştirilmiş olur. Kısacası bu makalenin takip eden tüm başlıklarında tuple nesnesinde kullanılan dönüştürme yönteminin aynısı geçerlidir. Bu sebeple tuple değişkenine ilişkin makaleye göre bu makalede örnekler daha kısa tutuldu. Ancak set değişkeninde, set nesnesinin özelliğinden dolayı değişiklikten sonra elemanların (set değişkeni içinde) yerleri değişebilir.

mySet = {"Volvo", 2006, 1.6, True}
myList = list(mySet)
myList[2] = "Chevrolet"
mySet = set(myList)
print(mySet) #Sonuç: {1.6, 'Chevrolet', 'Volvo', True}

5. Python’da Set Değişkenine Eleman Eklemek (add, update metotları)

Bir set değişkenine bir eleman eklemek için aşağıda gösterildiği gibi “add” metodu kullanılabilir.

mySet = {"Volvo", 2006, 1.6, True}
mySet.add("Toyota")
print(mySet) #Sonuç: {1.6, True, 'Volvo', 'Toyota', 2006}

Bir set değişkenine başka bir set değişkeninin elemanlarını eklemek için aşağıda gösterildiği gibi “update” metodu kullanılabilir.

mySet = {"Volvo", 2006, 1.6, True}
mySet.update(("Mercedes", "Toyota", "Nissan"))
print(mySet) #Sonuç: {1.6, True, 'Volvo', 'Mercedes', 'Nissan', 'Toyota', 2006} #elemanların sırası değişiklik gösterebilir.

#update metodu şu şekilde de kullanılabilir.
mySet = {"Volvo", 2006, 1.6, True}
x = {"Mercedes", "Toyota", "Nissan"}
mySet.update(x)
print(mySet) #Sonuç: {1.6, True, 'Volvo', 'Mercedes', 'Toyota', 2006, 'Nissan'} #elemanların sırası değişiklik gösterebilir.

“update” metodu, bir set değişkenine başka bir liste değişkeninin elemanlarını eklemek için de kullanılabilir.

mySet = {"Volvo", 2006, 1.6, True}
x = ["Mercedes", "Toyota", "Nissan"] #list
y = ("Honda", "Renault", "Peugeot") #tuple
mySet.update(x)
print(mySet) #Sonuç: {1.6, True, 'Volvo', 'Mercedes', 'Nissan', 'Toyota', 2006} #elemanların sırası değişiklik gösterebilir.
mySet.update(y)
print(mySet) #Sonuç: {1.6, True, 'Volvo', 'Peugeot', 'Honda', 'Mercedes', 'Nissan', 'Toyota', 2006, 'Renault'} #elemanların sırası değişiklik gösterebilir.

6. Python’da Set Değişkeninden Eleman Silmek (remove, discard, pop, clear metotları)

Bir set değişkeninden belirli bir elemanı kaldırmak/silmek için aşağıda gösterildiği gibi “remove” ya da “discard” metodu kullanılabilir. Kaldırılacak eleman set değişkeninde yoksa “remove” metodu hata verirken “discard” metodu hata vermez.

#remove metodu
mySet = {"Volvo", 2006, 1.6, True}
mySet.remove(2006)
print(mySet) #Sonuç: {1.6, 'Volvo', True}

'''
#remove metodu (silinecek elemanın set değişkeninde olmaması) (Hata)
mySet = {"Volvo", 2006, 1.6, True}
mySet.remove("Ford")
print(mySet) #Sonuç: KeyError: 'Ford'
'''

#discard metodu
mySet = {"Volvo", 2006, 1.6, True}
mySet.discard(True)
print(mySet) #Sonuç: {1.6, 'Volvo', 2006}

#discard metodu (silinecek elemanın set değişkeninde olmaması)
mySet = {"Volvo", 2006, 1.6, True}
mySet.discard("Ford")
print(mySet) #Sonuç: {1.6, 'Volvo', 2006, True} #Hata döndürmedi ve set değişkeninde de herhangi bir değişiklik olmadı.

Bir set değişkeninden belirli bir pozisyondaki elemanı kaldırmak/silmek set değişkenin indeks numaraları rassal olduğu için mümkün değildir. Ancak set değişkeninde bir elemanı kaldırmak için yine de “pop” metodu kullanılabilir. Ancak set değişkeninde “pop” metodu ile kaldırılan eleman rassal olacaktır.  Kaldırılacak rassal elemanın değeri “pop” metodunun farklı bir kullanımı ile aşağıda gösterildiği gibi tespit edilebilir.

#pop metodu
mySet = {"Volvo", 2006, 1.6, True}
mySet.pop() # Set değişkeninden rassal olarak bir elemanı siler.
print(mySet) #Sonuç: {'Volvo', 2006, True} #Sonuçlar farklılık gösterebilir.

#Silinen elemanın değerini bir değişkende saklamak için pop metodu şu şekilde kullanılabilir.
mySet = {"Volvo", 2006, 1.6, True}
x = mySet.pop() # Set değişkeninde  silinen elemanı gösterir.
print(x) #Sonuç: Silinecek elemanı gösterir.
print(mySet) #Sonuç: {'Volvo', 2006, True} #Sonuçlar farklılık gösterebilir.

Bir set değişkenin (değişkenin kendisini değil) tüm elemanlarını silmek için aşağıda gösterildiği gibi “clear” metodu kullanılabilir.

mySet = {"Volvo", 2006, 1.6, True}
mySet.clear() #Sadece tüm elemanlar silinecek; değişkenin kendisi silinmeyecek
print(mySet) #Sonuç: set()

#set() değişkeninin tümüyle silinip silinmediğinin kontrolü.
try: mySet
except NameError: mySet = None
if mySet is None:
    print("mySet değişkeni artık yok.")
else:
    print("mySet değişkeni var.") #Sonuç: mySet değişkeni var.

7. Python’da Set Değişkeninin Kendisini Silmek (del metodu)

Bir set değişkenin tüm elemanları ile birlikte kendisini de silmek için aşağıda gösterildiği gibi “del” metodu kullanılabilir.

#mySet değişkenini tümüyle silmek; sadece elemanlarının tümünü değil kendisini de silmek.
mySet = {"Volvo", 2006, 1.6, True}
del mySet

#mySet değişkeninin tümüyle silinip silinmediğinin kontrolü.
try: mySet
except NameError: mySet = None
if mySet is None:
    print("mySet değişkeni artık yok.") #Sonuç: mySet değişkeni artık yok.
else:
    print("mySet değişkeni var.")

8. Python’da Set Elemanlarına Döngülerle Erişmek (for döngüsü)

Bir set değişkeninin elamanlarına döngülerle erişmek için aşağıda gösterildiği gibi “for” döngüsü “in” metodu ile birlikte kullanılabilir.

mySet = {"Volvo", 2006, 1.6, True}
for x in mySet:
    print(x)
#Sonuç:
#1.6
#2006
#Volvo
#True

9. Python’da Set Değişkenleri İçin Döngü Sentaksını Sadeleştirmek (for döngüsü)

Set değişkenlerinde aşağıda gösterildiği gibi döngü sentaksları kısaltılabilir.

#Bu döngüyü aşağıdaki şekilde kısaltabiliriz
#mySet = {"Volvo", 2006, 1.6, True}
#for x in mySet:
#    print(x)

print("___________\n")

#Kısaltılmış form
mySet = {"Volvo", 2006, 1.6, True}
{print(x) for x in mySet} #prin(x) metodunu başa al, mySet sonundaki iki noktayı kaldır ve satırın tümünü set süslü parantezi içinde belirt.
#Sonuç:
#1.6
#Volvo
#2006
#True

10. Python’da Set Değişkenlerini Kopyalamak (copy metodu)

Set değişkenleri “copy” metodu kullanılarak çoğaltılabilir.

#copy metodu
mySet = {"Volvo","Toyota", "Mercedes", "Ford", "Peugeot"}
newSet = mySet.copy() #kopyala
print(newSet) #Sonuç: {'Mercedes', 'Volvo', 'Peugeot', 'Toyota', 'Ford'}

11. Python’da Set Değişkenlerini Birleştirmek (union ve update metotları)

Set değişkenleri “union” ve “update” metotları kullanılarak birleştirilebilir.

#union metodu (mySet1 ve mySet2 setlerini newSet gibi yeni bir set değişkeninde birleştirir)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
newSet = mySet1.union(mySet2)
print(newSet) #Sonuç: {'Volvo', 'Peugeot', 'Skoda', 'Ford', 'Fiat', 'Honda', 'Seat', 'Mercedes', 'Toyota', 'Renault'}

print("___________\n")

#union metodu (üçlü kullanım)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
mySet3 = {"Audi","Saab", "Mitsubishi", "Hyundai"}
newSet = mySet1.union(mySet2,mySet3) # newSet = mySet1.union(mySet2,mySet3, mySet4) gibi dörtlü ya da çoklu kullanabilirsiniz.
print(newSet) #Sonuç: {'Mitsubishi', 'Volvo', 'Peugeot', 'Saab', 'Skoda', 'Ford', 'Fiat', 'Honda', 'Hyundai', 'Seat', 'Mercedes', 'Toyota', 'Audi', 'Renault'}

print("___________\n")

#update metodu (mySet1 ve mySet2 setlerini mySet1 gibi mevcut bir set değişkeninde birleştirir)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
mySet1.update(mySet2)
print(mySet1) #Sonuç: {'Volvo', 'Peugeot', 'Skoda', 'Ford', 'Fiat', 'Honda', 'Seat', 'Mercedes', 'Toyota', 'Renault'}
#Not: union ve update metotları, set nesnelerinde yer alan ortak/aynı elemanları görmezden gelerek birleştirme yapar. Yani ortak elemanlar birleştirilen set değişkeninde tek eleman ile temsil edilir.
#Çünkü set nesnesinde elemanlar tekrar edemezdi.

“union” metodu yerine “|” operatörü de kullanılabilir.

# "|" operatörü union metodunda olduğu gibi (mySet1 ve mySet2 setlerini newSet gibi yeni bir set değişkeninde birleştirir)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
newSet = mySet1|mySet2
print(newSet) #Sonuç: {'Renault', 'Volvo', 'Seat', 'Mercedes', 'Ford', 'Toyota', 'Peugeot', 'Honda', 'Skoda', 'Fiat'}

12. Python’da Farklı Set Değişkenlerinin Ortak Elemanlarını Tespit Etmek (intersection ve intersection_update metotları)

Farklı set değişkenlerinin ortak elemanları “intersection” ve “intersection_update” metotları kullanılarak aşağıda gösterildiği gibi tespit edilebilir.

#intersection metodu (mySet1 ve mySet2 setlerinin ortak/aynı elemanlarını newSet gibi yeni bir set değişkenine atar.)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
newSet = mySet1.intersection(mySet2)
print(newSet) #Sonuç: {'Honda'}

print("___________\n")

#intersection_update metodu (mySet1 ve mySet2 setlerinin ortak/aynı elemanlarını mevcut bir set değişkenine atar.) 
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
mySet1.intersection_update(mySet2)
print(mySet1) #Sonuç: {'Honda'}

“intersection” metodu yerine “&” operatörü de kullanılabilir.

# "&" operatörü intersection metodunda olduğu gibi (mySet1 ve mySet2 setlerinin ortak/aynı elemanlarını newSet gibi yeni bir set değişkenine atar.)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
newSet = mySet1 & mySet2
print(newSet) #Sonuç: {'Honda'}

13. Python’da Farklı Set Değişkenlerinin Ortak Olmayan Elemanlarını Tespit Etmek (symmetric_difference ve symmetric_difference_update metotları)

Farklı set değişkenlerinin ortak olmayan elemanları ise “symmetric_difference” ve “symmetric_difference_update” metotları kullanılarak aşağıda gösterildiği gibi tespit edilebilir.

#symmetric_difference metodu (mySet1 ve mySet2 setlerinin ortak/aynı olmayan elemanlarını newSet gibi yeni bir set değişkenine atar.) 
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
newSet = mySet1.symmetric_difference(mySet2)
print(newSet) #Sonuç: {'Peugeot', 'Fiat', 'Mercedes', 'Renault', 'Volvo', 'Skoda', 'Ford', 'Seat', 'Toyota'}  # "Honda" verisi dışlandı.

print("___________\n")

#symmetric_difference_update metodu (mySet1 ve mySet2 setlerinin ortak/aynı olmayan elemanlarını mevcut bir set değişkenine atar.) 
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
mySet1.symmetric_difference_update(mySet2)
print(mySet1) #Sonuç: {'Peugeot', 'Fiat', 'Mercedes', 'Renault', 'Volvo', 'Skoda', 'Ford', 'Seat', 'Toyota'}  # "Honda" verisi dışlandı.

“symmetric_difference” metodu yerine “^” operatörü de kullanılabilir.

#"^" operatörü symmetric_difference metodunda olduğu gibi (mySet1 ve mySet2 setlerinin ortak/aynı olmayan elemanlarını newSet gibi yeni bir set değişkenine atar.) 
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
newSet = mySet1^mySet2
print(newSet) #Sonuç: {'Peugeot', 'Fiat', 'Mercedes', 'Renault', 'Volvo', 'Skoda', 'Ford', 'Seat', 'Toyota'}  # "Honda" verisi dışlandı.

14. Python’da İki Set Değişkeninin Fark Elemanlarını Tespit Etmek (difference ve difference_update metotları)

İki farklı set değişkeninin fark elemanları “difference” ve “difference_update” metotları kullanılarak aşağıda gösterildiği gibi tespit edilebilir. Aşağıdaki örneklerin incelenmesiyle de anlaşılacağı gibi “difference” ve “difference_update” metotları ile iki set değişkeninde ortak olmayan tüm elemanlar değil, bunlardan sadece ilkinin ortak olmayan elemanları tespit edilir.

#difference metodu (ilkinin mySet1 olduğu durum) 
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
newSet = mySet1.difference(mySet2)
print(newSet) #Sonuç: {'Volvo', 'Peugeot', 'Ford', 'Mercedes', 'Toyota'} # Sadece mySet1 nesnesinin "Honda" değeri hariç elemanları.


#difference metodu (ilkinin mySet2 olduğu durum) 
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
newSet = mySet2.difference(mySet1)
print(newSet) #Sonuç: {'Skoda', 'Renault', 'Fiat', 'Seat'}# Sadece mySet2 nesnesinin "Honda" değeri hariç elemanları.

#Not:"Honda" elemanının yukarıdaki her iki set nesnenin de ortak elemanı olduğuna dikkat edin.

print("___________\n")

#difference_update metodu (ilkinin mySet1 olduğu durum) 
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
mySet1.difference_update(mySet2)
print(mySet1) #Sonuç: {'Mercedes', 'Volvo', 'Peugeot', 'Toyota', 'Ford'}  # Sadece mySet1 nesnesinin "Honda" değeri hariç elemanları.

#difference_update metodu (ilkinin mySet2 olduğu durum) 
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
mySet2.difference_update(mySet1)
print(mySet2) #Sonuç: {'Fiat', 'Skoda', 'Renault', 'Seat'}  # Sadece mySet2 nesnesinin "Honda" değeri hariç elemanları.

#Not:"Honda" elemanının yukarıdaki her iki set nesnenin de ortak elemanı olduğuna dikkat edin. 

“difference” metodu yerine “-” operatörü de kullanılabilir.

# "-" operatörü difference metodunda olduğu gibi (ilkinin mySet1 olduğu durum) 
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
newSet = mySet1-mySet2
print(newSet) #Sonuç: {'Volvo', 'Peugeot', 'Ford', 'Mercedes', 'Toyota'} # Sadece mySet1 nesnesinin "Honda" değeri hariç elemanları.

15. Python’da İki Set Değişkeninde Ortak Elemanları Kontrol Etmek (isdisjoint metodu)

İki farklı set değişkeninin ortak elemanlarının olup olmadığı “isdisjoint” metodu kullanılarak aşağıda gösterildiği gibi tespit edilebilir. Bu metot matematiksel bakımdan değerlendirilirse iki kümenin kesişim elemanını ifade eder.

#isdisjoint metodu (Kesişim kümesi boş olduğu için False değeri döndürür.)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot", "Honda"}
mySet2 = {"Honda","Fiat", "Renault", "Seat", "Skoda"}
myResult = mySet1.isdisjoint(mySet2)
print(myResult) #Sonuç: False #"Honda" değeri her iki değişkeninin de elemanı.

#isdisjoint metodu (Kesişim kümesi boş olmadığı için True değeri döndürür.)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot"}
mySet2 = {"Fiat", "Renault", "Seat", "Skoda"}
myResult = mySet1.isdisjoint(mySet2)
print(myResult) #Sonuç: True #İki değişkeninin ortak elemanı yok.

16. Python’da İki Set Değişkeni Arasında Alt ve Üst Küme İlişkisini Kontrol Etmek (issubset ve issuperset metotları)

İki farklı set değişkeninin birbirleri arasında alt ya da üst küme ilişkisinin olup olmadığı “issubset” ve “issuperset” metotları kullanılarak aşağıda gösterildiği gibi tespit edilebilir. Diğer bir ifadeyle bir set elemanlarının tümünün diğer set elemanları içinde bulunup bulunmadığının kontrol edilmesidir.

#issubset metodu (Kesişim kümesi değişkenlerden birinin tüm elamanlarını içeriyor.)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot"}
mySet2 = {"Mercedes", "Ford", "Peugeot"}
myResult = mySet2.issubset(mySet1)  #mySet2, mySet1'in alt kümesi
print(myResult) #Sonuç: True

#issubset metodu (Kesişim kümesi değişkenlerden birinin tüm elamanlarını içermiyor.)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot"}
mySet2 = {"Fiat", "Renault", "Peugeot"}
myResult = mySet2.issubset(mySet1) #mySet2, mySet1'in alt kümesi değil
print(myResult) #Sonuç: False

print("___________\n")

#issuperset metodu (Kesişim kümesi değişkenlerden birinin tüm elamanlarını içeriyor.)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot"}
mySet2 = {"Mercedes", "Ford", "Peugeot"}
myResult = mySet1.issuperset(mySet2)  #mySet1, mySet2'nin üst kümesi
print(myResult) #Sonuç: True

#issuperset metodu (Kesişim kümesi değişkenlerden birinin tüm elamanlarını içermiyor.)
mySet1 ={"Volvo","Toyota", "Mercedes", "Ford", "Peugeot"}
mySet2 = {"Fiat", "Renault", "Peugeot"}
myResult = mySet1.issuperset(mySet2) #mySet1, mySet2'nin üst kümesi değil
print(myResult) #Sonuç: False 

17. Python’da Set Elemanlarının Toplamı (sum metodu)

Set elemanlarının toplamı “sum” metodu kullanılarak aşağıda gösterildiği gibi hesaplanabilir.

mySet = {1,3,5,7,2,4,6,8}
 
#mySet toplamını hesapla
mySum = sum(mySet)
print(mySum) #Sonuç: 36
 
#100'ün üzerine myList toplamını ilave et. 
mySum = sum(mySet, 100)
print(mySum) #Sonuç: 136

print("__________\n")

mySet = {1,3,5,7,2,4,6,8}
 
mySum = sum(mySet)
myAverage= mySum/len(mySet) #toplamın eleman sayısını bölümü ortalamayı verecektir.
print (myAverage) #Sonuç: 4.5

Set elemanları sayısal değerlerden oluşmuyorsa “sum” metodu aşağıda gösterildiği gibi hata döndürecektir.

# mySet elamanları sayısal değilse aşağıdaki hata oluşur.
mySet = {'Volvo', 1.6, 2006, True}
 
#mySet toplamını hesapla
mySum = sum(mySet)
print(mySum) #Sonuç: TypeError: unsupported operand type(s) for +: 'int' and 'str'

18. Python’da Set Elemanlarının Maksimum ve Minimum Değerleri (max, min metotları)

Set elemanları sayısal ifadeler ise aşağıda gösterildiği gibi “max” metodu en büyük değere sahip elemanı, “min” metodu ise en küçük değere sahip elemanı verecektir.

mySet = {1,3,5,7,2,4,6,8}
maxVal = max(mySet) # En büyük değere sahip elemanı verir.
print(maxVal) #Sonuç: 8

mySet = {1,3,5,7,2,4,6,8}
minVal = min(mySet) # En küçük değere sahip elemanı verir.
print(minVal) #Sonuç: 1

Set elemanları sayısal değerlerden oluşmuyorsa aşağıda gösterildiği gibi “max” metodu alfabetik sıraya göre Z’den A’ya doğru ilk set elemanını, “min” metodu ise A’dan Z’ye doğru ilk set elemanını verecektir.

mySet = {'Volvo', "Mercedes", "Ford", "Volkswagen"}
maxVal = max(mySet) #Alfabetik sıraya göre Z'den A'ya doğru ilk set elemanını verir.
print(maxVal) #Sonuç: Volvo

mySet = {'Volvo', "Mercedes", "Ford", "Volkswagen"}
minVal = min(mySet) #Alfabetik sıraya göre A'dan Z'ye doğru ilk set elemanını verir.
print(minVal) #Sonuç: Ford

Ayrıca set elemanlarının karakter uzunluğuna göre en fazla ya da en az karakter içeren elemanlarını elde etmek için aşağıdaki komutları inceleyebilirsiniz.

mySet = {'Volvo', "Mercedes", "Ford", "Volkswagen"}
maxChar = max(mySet, key=len) # En fazla karaktere sahip elemanı verir.
print(maxChar) #Sonuç: Volkswagen

mySet = {'Volvo', "Mercedes", "Ford", "Volkswagen"}
minChar = min(mySet, key=len) # En az karaktere sahip elemanı verir.
print(minChar) #Sonuç: Ford

19. Python’da Set Elemanlarını Numaralandırmak (enumerate metodu)

Set elemanları (iterable string ifadedeler) “enumerate” metodu ile aşağıda gösterildiği gibi indekslenebilir.

mySet = {'Volvo', "Mercedes", "Ford", "Volkswagen"}
#Elemanları 0-Volvo, 1-Mercedes gibi indekslemek istiyoruz. (Ya da string için 0-V, 1-o, 2-l vb. şeklinde indekslemek)
print (list(enumerate(mySet))) #Sonuç: [(0, 'Volvo'), (1, 'Mercedes'), (2, 'Ford'), (3, 'Volkswagen')]

print("__________\n")

#İndeks numaralarını ve elemanları alt alta yazdırabilirsiniz.

#mySet için
for myIndx, myElem in enumerate(mySet):
    print("Indeks: ", myIndx, "----" + "Karakter: ", myElem)

#Sonuç:
"""
Indeks:  0 ----Karakter:  Volvo
Indeks:  1 ----Karakter:  Mercedes
Indeks:  2 ----Karakter:  Ford
Indeks:  3 ----Karakter:  Volkswagen
"""
print("__________\n")


#İndeks numarasını belirli bir değerden başlatabilirsiniz.
mySet = {'Volvo', "Mercedes", "Ford", "Volkswagen"}
for myIndx, myElem in enumerate(mySet, 20):
    print("Indeks: ", myIndx, "----" + "Karakter: ", myElem)
#Sonuç:
"""
Indeks:  20 ----Karakter:  Volvo
Indeks:  21 ----Karakter:  Mercedes
Indeks:  22 ----Karakter:  Ford
Indeks:  23 ----Karakter:  Volkswagen
"""

Not: Set elemanlarının indekslenemez olması, indeks numaraları ile elemanlara erişmenin mümkün olmadığını ifade eder. Bunun sonucu olarak set elemanları yukarıda gösterildiği gibi numaralandırıldığında, elemanlara karşılık gelen numaralar da değişecektir. Eğer yukarıdaki komutları IDE’nizde yeniden çalıştırdığınızda sıra numaraları değişmiyorsa, makalenin girişinde verilen online editörden çalıştırmayı deneyerek, numaralara karşılık gelen elemanların (her çalıştırıldığında) değiştiğini gözlemleyebilirsiniz. Bu yüzden set nesnesiyle enumerate metodunu kullanırken söz konusu durumu göz önünde bulundurmakta fayda var.

20. Python’da Set Elemanı Olarak Mantıksal Değişkenler (any, all metotları)

“any” metodu set elemanlarından en az birinin true olması durumunda true, diğer durumlarda ise false değer döndürür. “all” metodu set elemanlarının tümünün true olması durumunda true, diğer durumlarda ise false değerini döndürür.

# any methodu, bir değer kümesinin en az bir elamanı true ise true,
# tüm elemanları false ise false değeri döndürür.

#Tüm değerler false olduğu için x değişkeni false değerini alır.
x = any({False, False, False, False})
print (x) #Sonuç: False
  
#En az bir değer true olduğu için x değişkeni true değerini alır.
x = any({False, True, False, False})
print (x) #Sonuç: True
  
#En az bir değer true olduğu için x değişkeni true değerini alır.
x = any({True, False, False, False})
print (x) #Sonuç: True

print("__________\n")

# all methodu, bir değer kümesinin tüm elamanları true ise true,
# diğer durumlarda ise false değeri döndürür.

#Tüm değerler true olduğu için x değişkeni true değerini alır.
x = all({True, True, True, True})
print (x) #Sonuç: True
  
#Tüm değerler true olmadığı için x değişkeni false değerini alır.
x = all({False, True, True, False})
print (x) #Sonuç: False
  
#Tüm değerler false olduğu (tüm değerler true olmadığı) için x değişkeni false değerini alır.
x = all({False, False, False})
print (x) #Sonuç: False

21. Python’da Frozen Set Değişkeni

Frozen set değişkenlerinin elemanları, set değişkenlerinin tekrar sıralanamaz (unordered), tekrar edemez (unique) ve indekslenemez özelliklerine ilave olarak değiştirilemezler (immutable). Yukarıda, elemanları değiştirilebilir (mutable) set değişkenleri üzerinden açıklanan add, remove, discard, clean gibi mutable metotlar frozen set değişkenlerinde kullanılamazlar.

#Frozen set elemanlarında değişiklik yapılamaz. Yani set nesnelerinin özelliklerine ilave olarak immutable'dirler.

# Örneğin add metodu kullanılırsa hata oluşur.
myFroSet = frozenset(("Volvo", 2006, 1.6, True))
myFroSet.add("Toyota")
print(myFroSet) #Sonuç: AttributeError: 'frozenset' object has no attribute 'add'

#Benzer şekilde remove metodu kullanılırsa da hata oluşur.
myFroSet = frozenset(("Volvo", 2006, 1.6, True))
myFroSet.remove(2006)
print(myFroSet) #Sonuç: AttributeError: 'frozenset' object has no attribute 'remove'
  

 

 

İshak Kutlu, Veri Bilimi İçin Python Notları

Yorum Yap

İshak Kutlu

Veri & Otomasyon Uzmanı

Kurumsal iş akışlarını düzenleyen veri odaklı otomasyon sistemleri ve makine öğrenmesi tabanlı çözümler geliştirir. Gerçek operasyonel süreçler için ölçeklenebilir ve izlenebilir yapılar tasarlar.

YouTube   YouTube   YouTube   YouTube