Python’da Setler
Bu eğitimde Python kümeleri hakkında her şeyi öğreneceksiniz; nasıl oluşturuldukları, bunlara eleman eklenmesi veya çıkarılması ve Python’da kümeler üzerinde gerçekleştirilen tüm işlemler.
Bir küme, sıralanmamış bir öğeler topluluğudur. Her küme öğesi benzersizdir (yineleme yok) ve değişmez olmalıdır (değiştirilemez).
Ancak, bir kümenin kendisi değişkendir. Ondan öğeler ekleyebilir veya çıkarabiliriz.
Kümeler aynı zamanda birleşim, kesişim, simetrik fark gibi matematiksel küme işlemlerini gerçekleştirmek için de kullanılabilir.
Python Setleri Oluşturma
{}
Tüm öğeler (öğeler) , virgülle ayrılmış küme parantezleri içine yerleştirilerek veya yerleşik set()
işlev kullanılarak bir küme oluşturulur.
Herhangi bir sayıda öğeye sahip olabilir ve farklı türlerde olabilirler (integer, float, tuple, string vb.). Ancak bir küme, öğeleri olarak listeler , kümeler veya sözlükler gibi değiştirilebilir öğelere sahip olamaz .
1 2 3 4 5 6 7 8 | # Different types of sets in Python # set of integers my_set = {1, 2, 3} print(my_set) # set of mixed datatypes my_set = {1.0, "Hello", (1, 2, 3)} print(my_set) |
Çıktı
1 2 | <samp>{1, 2, 3} {1.0, (1, 2, 3), 'Merhaba'}</samp> |
Aşağıdaki örnekleri de deneyin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # set cannot have duplicates # Output: {1, 2, 3, 4} my_set = {1, 2, 3, 4, 3, 2} print(my_set) # we can make set from a list # Output: {1, 2, 3} my_set = set([1, 2, 3, 2]) print(my_set) # set cannot have mutable items # here [3, 4] is a mutable list # this will cause an error. my_set = {1, 2, [3, 4]} |
Çıktı
1 2 3 4 5 6 | <samp>{1, 2, 3, 4} {1, 2, 3} Geri izleme (en son arama son): Dosya "<string>", satır 15, <module> içinde benim_küme = {1, 2, [3, 4]} TypeError: silinemez tür: 'liste'</samp> |
Boş bir küme oluşturmak biraz zor.
Boş küme parantezleri {}
Python’da boş bir sözlük oluşturacaktır. Elemansız bir küme oluşturmak için set()
fonksiyonu argümansız kullanırız.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # Distinguish set and dictionary while creating empty set # initialize a with {} a = {} # check data type of a print(type(a)) # initialize a with set() a = set() # check data type of a print(type(a)) |
Çıktı
1 2 | <samp><sınıf 'dikte'> <sınıf 'set'></samp> |
Python’da bir kümeyi değiştirme
Kümeler değişkendir. Ancak sırasız oldukları için indekslemenin bir anlamı yoktur.
Dizinleme veya dilimleme kullanarak bir kümenin öğesine erişemez veya öğeyi değiştiremeyiz. Set veri türü bunu desteklemiyor.
add()
Yöntemi kullanarak tek bir öğe ve yöntemi kullanarak birden çok öğe ekleyebiliriz update()
. Yöntem , argüman olarak tuples , listeler, dizeler veya diğer kümeleri update()
alabilir . Her durumda, kopyalardan kaçınılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # initialize my_set my_set = {1, 3} print(my_set) # my_set[0] # if you uncomment the above line # you will get an error # TypeError: 'set' object does not support indexing # add an element # Output: {1, 2, 3} my_set.add(2) print(my_set) # add multiple elements # Output: {1, 2, 3, 4} my_set.update([2, 3, 4]) print(my_set) # add list and set # Output: {1, 2, 3, 4, 5, 6, 8} my_set.update([4, 5], {1, 6, 8}) print(my_set) |
Çıktı
1 2 3 4 | <samp>{1, 3} {1, 2, 3} {1, 2, 3, 4} {1, 2, 3, 4, 5, 6, 8}</samp> |
Bir kümeden eleman çıkarma
discard()
Belirli bir öğe, ve yöntemleri kullanılarak bir kümeden çıkarılabilir remove()
.
İkisi arasındaki tek fark discard()
, eleman kümede yoksa fonksiyonun bir kümeyi değiştirmeden bırakmasıdır. Öte yandan, remove()
fonksiyon böyle bir durumda (kümede eleman yoksa) bir hata verecektir.
Aşağıdaki örnek bunu gösterecektir.
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 | # Difference between discard() and remove() # initialize my_set my_set = {1, 3, 4, 5, 6} print(my_set) # discard an element # Output: {1, 3, 5, 6} my_set.discard(4) print(my_set) # remove an element # Output: {1, 3, 5} my_set.remove(6) print(my_set) # discard an element # not present in my_set # Output: {1, 3, 5} my_set.discard(2) print(my_set) # remove an element # not present in my_set # you will get an error. # Output: KeyError my_set.remove(2) |
Çıktı
1 2 3 4 5 6 7 | <samp>{1, 3, 4, 5, 6} {1, 3, 5, 6} {1, 3, 5} {1, 3, 5} Geri izleme (en son arama son): Dosya "<string>", satır 28, <module> içinde Anahtar Hatası: 2</samp> |
Benzer şekilde, yöntemi kullanarak bir öğeyi kaldırabilir ve iade edebiliriz pop()
.
Küme sırasız bir veri türü olduğundan, hangi öğenin atılacağını belirlemenin bir yolu yoktur. Tamamen keyfi.
clear()
Yöntemi kullanarak bir kümedeki tüm öğeleri de kaldırabiliriz .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # initialize my_set # Output: set of unique elements my_set = set("HelloWorld") print(my_set) # pop an element # Output: random element print(my_set.pop()) # pop another element my_set.pop() print(my_set) # clear my_set # Output: set() my_set.clear() print(my_set) |
Çıktı
1 2 3 4 | <samp>{'H', 'l', 'r', 'W', 'o', 'd', 'e'} H {'r', 'W', 'o', 'd', 'e'} Ayarlamak()</samp> |
Python Kümesi İşlemleri
Kümeler, birleşim, kesişim, fark ve simetrik fark gibi matematiksel küme işlemlerini gerçekleştirmek için kullanılabilir. Bunu operatörler veya yöntemlerle yapabiliriz.
Aşağıdaki işlemler için aşağıdaki iki kümeyi ele alalım.
1 2 | >>> A = {1, 2, 3, 4, 5} >>> B = {4, 5, 6, 7, 8} |
Birliği ayarla

BirliğiAveBher iki kümenin tüm öğelerinin bir kümesidir.
|
Birleştirme operatörü kullanılarak gerçekleştirilir . union()
Aynı yöntem kullanılarak da gerçekleştirilebilir .
1 2 3 4 5 6 7 8 | # Set union method # initialize A and B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} # use | operator # Output: {1, 2, 3, 4, 5, 6, 7, 8} print(A | B) |
Çıktı
1 | <samp>{1, 2, 3, 4, 5, 6, 7, 8}</samp> |
Aşağıdaki örnekleri Python kabuğunda deneyin.
1 2 3 4 5 6 7 | # use union function >>> A.union(B) {1, 2, 3, 4, 5, 6, 7, 8} # use union function on B >>> B.union(A) {1, 2, 3, 4, 5, 6, 7, 8} |
Kavşağı Ayarla

KesişimiAveBher iki kümede de ortak olan öğeler kümesidir.
&
Kavşak operatörü kullanılarak gerçekleştirilir . intersection()
Aynı yöntem kullanılarak da gerçekleştirilebilir .
1 2 3 4 5 6 7 8 | # Intersection of sets # initialize A and B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} # use & operator # Output: {4, 5} print(A & B) |
Çıktı
1 | <samp>{4, 5}</samp> |
Aşağıdaki örnekleri Python kabuğunda deneyin.
1 2 3 4 5 6 7 | # use intersection function on A >>> A.intersection(B) {4, 5} # use intersection function on B >>> B.intersection(A) {4, 5} |
Farkı Ayarla

set farkıBsettenA(A–B) yalnızca içinde olan bir öğeler kümesidir.Aama içinde değilB. Benzer şekilde,B–Abir öğeler kümesidirBama içinde değilA.
-
Fark, operatör kullanılarak gerçekleştirilir . difference()
Aynı yöntem kullanılarak da gerçekleştirilebilir .
1 2 3 4 5 6 7 8 | # Difference of two sets # initialize A and B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} # use - operator on A # Output: {1, 2, 3} print(A - B) |
Çıktı
1 | <samp>{1, 2, 3}</samp> |
Aşağıdaki örnekleri Python kabuğunda deneyin.
1 2 3 4 5 6 7 8 9 10 11 | # use difference function on A >>> A.difference(B) {1, 2, 3} # use - operator on B >>> B - A {8, 6, 7} # use difference function on B >>> B.difference(A) {8, 6, 7} |
Simetrik Farkı Ayarla

Simetrik FarkıAveBbir öğeler kümesidirAveBancak her ikisinde de değil (kavşak hariç).
^
Operatör kullanılarak simetrik fark yapılır . Aynı yöntem kullanılarak da gerçekleştirilebilir symmetric_difference()
.
1 2 3 4 5 6 7 8 | # Symmetric difference of two sets # initialize A and B A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8} # use ^ operator # Output: {1, 2, 3, 6, 7, 8} print(A ^ B) |
Çıktı
1 | <samp>{1, 2, 3, 6, 7, 8}</samp> |
Aşağıdaki örnekleri Python kabuğunda deneyin.
1 2 3 4 5 6 7 | # use symmetric_difference function on A >>> A.symmetric_difference(B) {1, 2, 3, 6, 7, 8} # use symmetric_difference function on B >>> B.symmetric_difference(A) {1, 2, 3, 6, 7, 8} |
Diğer Python Kümesi Yöntemleri
Bazılarını yukarıda zaten kullandığımız birçok set yöntemi vardır. Set nesneleri ile kullanılabilen tüm yöntemlerin bir listesi:
Yöntem | Tanım |
---|---|
Ekle() | Kümeye bir eleman ekler |
açık() | Kümedeki tüm öğeleri kaldırır |
kopyala() | Kümenin bir kopyasını döndürür |
fark() | İki veya daha fazla kümenin farkını yeni bir küme olarak döndürür |
fark_güncelleme() | Bu kümeden başka bir kümenin tüm öğelerini kaldırır |
atmak() | Üye ise kümeden bir öğeyi kaldırır. (Öğe sette değilse hiçbir şey yapmayın) |
kavşak() | İki kümenin kesişimini yeni bir küme olarak döndürür |
kesişim_güncelleme() | Kümeyi kendisinin ve diğerinin kesişimiyle günceller |
ayrık() | True İki kümenin boş bir kesişimi varsa döndürür |
altküme() | True Başka bir küme bu kümeyi içeriyorsa döndürür |
issuperset() | True Bu küme başka bir küme içeriyorsa döndürür |
pop() | İsteğe bağlı bir küme öğesini kaldırır ve döndürür. KeyError Küme boşsa yükseltir |
kaldırmak() | Kümeden bir öğeyi kaldırır. Öğe üye değilse, yükseltirKeyError |
simetrik_fark() | İki kümenin simetrik farkını yeni bir küme olarak döndürür |
simetrik_difference_update() | Bir kümeyi kendisinin ve diğerinin simetrik farkıyla günceller |
Birlik() | Yeni bir kümedeki kümelerin birleşimini döndürür |
Güncelleme() | Seti kendisinin ve diğerlerinin birleşimiyle günceller |
Diğer Set İşlemleri
Üyelik Testini Ayarla
Anahtar kelimeyi kullanarak bir öğenin bir kümede olup olmadığını test edebiliriz in
.
1 2 3 4 5 6 7 8 9 10 11 | # in keyword in a set # initialize my_set my_set = set("apple") # check if 'a' is present # Output: True print('a' in my_set) # check if 'p' is present # Output: False print('p' not in my_set) |
Çıktı
1 2 | <samp>Doğru Yanlış</samp> |
Bir Küme İçinde Yineleme
for
Bir döngü kullanarak bir kümedeki her öğeyi yineleyebiliriz .
1 2 3 4 5 6 7 | >>> for letter in set("apple"): ... print(letter) ... a p e l |
Setli Dahili Fonksiyonlar
all()
, any()
, enumerate()
, len()
, max()
, min()
, vb. gibi yerleşik işlevler sorted()
, sum()
genellikle farklı görevleri gerçekleştirmek için kümelerle birlikte kullanılır.
İşlev | Tanım |
---|---|
tüm() | True Kümenin tüm öğeleri doğruysa (veya küme boşsa) döndürür . |
hiç() | True Kümenin herhangi bir elemanı doğruysa döndürür . Küme boşsa döner False . |
numaralandırmak() | Bir numaralandırma nesnesi döndürür. Kümenin tüm öğelerinin bir çift olarak indeksini ve değerini içerir. |
uzun() | Kümedeki uzunluğu (öğe sayısı) döndürür. |
maksimum() | Kümedeki en büyük öğeyi döndürür. |
min() | Kümedeki en küçük öğeyi döndürür. |
sıralanmış() | Kümedeki öğelerden yeni bir sıralanmış liste döndürür (kümenin kendisini sıralamaz). |
toplam() | Kümedeki tüm öğelerin toplamını döndürür. |
Python Dondurulmuş Küme
Frozenset, bir kümenin özelliklerine sahip yeni bir sınıftır, ancak öğeleri atandıktan sonra değiştirilemez. Tuple’lar değişmez listeler iken, frozenset’ler değişmez kümelerdir.
Değişken olan kümeler, karıştırılamaz, bu nedenle sözlük anahtarları olarak kullanılamazlar. Öte yandan, donmuş kümeler yıkanabilir ve bir sözlüğün anahtarı olarak kullanılabilir.
Frozensets, frozenset() işlevi kullanılarak oluşturulabilir .
Bu veri türü copy()
, difference()
, intersection()
, isdisjoint()
, issubset()
, issuperset()
ve gibi yöntemleri symmetric_difference()
destekler union()
. Değişmez olduğu için eleman ekleyen veya çıkaran yöntemlere sahip değildir.
1 2 3 4 | # Frozensets # initialize A and B A = frozenset([1, 2, 3, 4]) B = frozenset([3, 4, 5, 6]) |
Bu örnekleri Python kabuğunda deneyin.
1 2 3 4 5 6 7 8 9 | >>> A.isdisjoint(B) False >>> A.difference(B) frozenset({1, 2}) >>> A | B frozenset({1, 2, 3, 4, 5, 6}) >>> A.add(3) ... AttributeError: 'frozenset' object has no attribute 'add' |