Python’un küme türüyle operasyonları (örneğin, birleşim kümelerini, ürün kümelerini ve alt kümeleri belirleme) ayarlayın

Python, kümeleri işleyen yerleşik bir veri türü kümesi sağlar.

Tür kümesi, yinelenmeyen öğeler (aynı değerde olmayan öğeler, benzersiz öğeler) topluluğudur ve birleşim kümesi, ürün kümesi ve fark kümesi gibi küme işlemlerini gerçekleştirebilir.

Bu bölümde set tipi set işlemlerindeki temel işlemler örnek kod ile anlatılmaktadır.

  • Set nesnelerinin oluşturulması:{},set()
  • dahil etme gösterimini ayarla
  • Kümedeki eleman sayısı:len()
  • Bir Kümeye Öğe Ekleme:add()
  • Bir kümeden bir öğeyi kaldırma:discard(),remove(),pop(),clear()
  • Wasset (birleşme, birlik):|operatör,union()
  • Ürün setleri (ortak parçalar, kavşaklar, kavşaklar):& Şebeke,intersection()
  • göreceli tamamlayıcı:-Şebeke,difference()
  • simetri farkı seti:^ operatörü,symmetric_difference()
  • alt küme veya değil:<= operatör,issubset()
  • Üst takım veya değil:>= operatör,issuperset()
  • Karşılıklı asal olup olmadıklarının belirlenmesi:isdisjoint()

Küme türü, öğeleri ekleyebilen ve silebilen değişken bir türdür ve ayrıca küme türüyle aynı küme işlemine ve diğer yöntemlere sahip olan ancak değişmez olan bir donmuş küme türü vardır (elemanlar eklenerek, silinerek veya başka bir şekilde değiştirilerek değiştirilemez). ).

Set nesnesinin oluşturulması::{},set()

Dalga parantezleri tarafından oluşturuldu {}

Tür kümesinin nesneleri, öğelerin {} parantezleri içine alınmasıyla oluşturulabilir.

Yinelenen değerler varsa, bunlar yok sayılır ve öğe olarak yalnızca benzersiz değerler kalır.

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

print(s)
print(type(s))
# {1, 2, 3, 4}
# <class 'set'>

Eleman olarak farklı tiplere sahip olmak mümkündür. Ancak liste türleri gibi güncellenebilir nesneler kaydedilemez. Tuple’lara izin verilir.

Ayrıca, küme türleri sırasız olduğundan, oluşturuldukları sıra saklanmaz.

s = {1.23, 'abc', (0, 1, 2), 'abc'}

print(s)
# {(0, 1, 2), 1.23, 'abc'}

# s = {[0, 1, 2]}
# TypeError: unhashable type: 'list'

İnt ve float gibi farklı türler, değerleri eşdeğerse kopya olarak kabul edilir.

s = {100, 100.0}

print(s)
# {100}

Boş küme {} bir sözlük türü olarak kabul edildiğinden, aşağıda açıklanan yapıcı kullanılarak boş bir küme türü nesnesi (boş küme) oluşturulabilir.

s = {}

print(s)
print(type(s))
# {}
# <class 'dict'>

Yapıcı set() tarafından oluşturuldu

Set türündeki nesneler, yapıcı set() ile de oluşturulabilir.

Liste veya tanımlama grubu gibi yinelenebilir bir nesnenin bağımsız değişken olarak belirtilmesi, öğeleri yalnızca benzersiz değerler olan ve yinelenen öğelerin hariç tutulduğu bir küme nesnesi oluşturur.

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

print(l)
print(type(l))
# [1, 2, 2, 3, 1, 4]
# <class 'list'>

s_l = set(l)

print(s_l)
print(type(s_l))
# {1, 2, 3, 4}
# <class 'set'>

Immutable frozenset türleri, frozenset() yapıcısıyla oluşturulur.

fs_l = frozenset(l)

print(fs_l)
print(type(fs_l))
# frozenset({1, 2, 3, 4})
# <class 'frozenset'>

Argüman atlanırsa, boş bir küme tipi nesne (boş küme) oluşturulur.

s = set()

print(s)
print(type(s))
# set()
# <class 'set'>

Yinelenen öğeler, set() kullanılarak bir listeden veya demetten kaldırılabilir, ancak orijinal listenin sırası korunmaz.

Bir küme türünü bir listeye veya demete dönüştürmek için list(),tuple() kullanın.

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

l_unique = list(set(l))
print(l_unique)
# [1, 2, 3, 4]

Sırayı korurken yinelenen öğeleri kaldırma, yalnızca yinelenen öğeleri ayıklama ve iki boyutlu bir dizide (listeler listesi) yinelenen öğeleri işleme hakkında bilgi için aşağıdaki makaleye bakın.

dahil etme gösterimini ayarla

Liste kavrayışlarının yanı sıra, belirlenmiş kavrayışlar da vardır. Liste kavramalarında köşeli parantezleri [] parantez {} ile değiştirin.

s = {i**2 for i in range(5)}

print(s)
# {0, 1, 4, 9, 16}

Liste anlama gösterimi hakkında daha fazla bilgi için aşağıdaki makaleye bakın.

Kümedeki eleman sayısı:len()

Bir kümedeki eleman sayısı, yerleşik len() işleviyle elde edilebilir.

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

print(s)
print(len(s))
# {1, 2, 3, 4}
# 4

Her listedeki yinelenen değerlere sahip öğelerin vb. öğelerini saymak istiyorsanız, aşağıdaki makaleye bakın.

Bir Kümeye Öğe Ekleme:add()

Bir kümeye eleman eklemek için add() yöntemini kullanın.

s = {0, 1, 2}

s.add(3)
print(s)
# {0, 1, 2, 3}

Bir kümeden bir öğeyi kaldırma:discard(),remove(),pop(),clear()

Bir kümeden bir öğeyi çıkarmak için, discard(), remove(), pop() ve clear() yöntemlerini kullanın.

discard() yöntemi, bağımsız değişkende belirtilen öğeyi siler. Kümede olmayan bir değer belirtilirse hiçbir şey yapılmaz.

s = {0, 1, 2}

s.discard(1)
print(s)
# {0, 2}

s = {0, 1, 2}

s.discard(10)
print(s)
# {0, 1, 2}

Remove() yöntemi ayrıca bağımsız değişkende belirtilen öğeyi kaldırır, ancak kümede mevcut olmayan bir değer belirtilirse KeyError hatası döndürülür.

s = {0, 1, 2}

s.remove(1)
print(s)
# {0, 2}

# s = {0, 1, 2}

# s.remove(10)
# KeyError: 10

pop() yöntemi, bir kümeden öğeleri kaldırır ve değerlerini döndürür. Hangi değerlerin kaldırılacağını seçmek mümkün değildir. Boş bir küme, KeyError hatasına neden olur.

s = {2, 1, 0}

v = s.pop()

print(s)
print(v)
# {1, 2}
# 0

s = {2, 1, 0}

print(s.pop())
# 0

print(s.pop())
# 1

print(s.pop())
# 2

# print(s.pop())
# KeyError: 'pop from an empty set'

clear() yöntemi tüm öğeleri kaldırır ve kümeyi boş yapar.

s = {0, 1, 2}

s.clear()
print(s)
# set()

Wasset (birleşme, birlik):|operatör,union()

Birleşim kümesi (birleşme, birleşim) | operatör veya union() yöntemi.

s1 = {0, 1, 2}
s2 = {1, 2, 3}
s3 = {2, 3, 4}

s_union = s1 | s2
print(s_union)
# {0, 1, 2, 3}

s_union = s1.union(s2)
print(s_union)
# {0, 1, 2, 3}

Bir metot için birden fazla argüman belirtilebilir. Set tipine ek olarak, set() ile set tipine dönüştürülebilen listeler ve demetler de argüman olarak belirtilebilir. Aynısı sonraki operatörler ve yöntemler için de geçerlidir.

s_union = s1.union(s2, s3)
print(s_union)
# {0, 1, 2, 3, 4}

s_union = s1.union(s2, [5, 6, 5, 7, 5])
print(s_union)
# {0, 1, 2, 3, 5, 6, 7}

Ürün setleri (ortak parçalar, kavşaklar, kavşaklar):& Şebeke,intersection()

Ürün seti (ortak kısım, kesişim ve kesişim) & operatörü veya kesişim() yöntemi.

s_intersection = s1 & s2
print(s_intersection)
# {1, 2}

s_intersection = s1.intersection(s2)
print(s_intersection)
# {1, 2}

s_intersection = s1.intersection(s2, s3)
print(s_intersection)
# {2}

göreceli tamamlayıcı:-Şebeke,difference()

Fark kümesi – operatörü veya fark() yöntemi ile elde edilebilir.

s_difference = s1 - s2
print(s_difference)
# {0}

s_difference = s1.difference(s2)
print(s_difference)
# {0}

s_difference = s1.difference(s2, s3)
print(s_difference)
# {0}

simetri farkı seti:^ operatörü,symmetric_difference()

Simetrik fark kümesi (ikisinden yalnızca birinde bulunan öğeler kümesi), ^ operatörü veya simetrik_difference() ile elde edilebilir.

Mantıksal işlemlerde özel ayrılmaya (XOR) eşdeğerdir.

s_symmetric_difference = s1 ^ s2
print(s_symmetric_difference)
# {0, 3}

s_symmetric_difference = s1.symmetric_difference(s2)
print(s_symmetric_difference)
# {0, 3}

alt küme veya değil:<= operatör,issubset()

Bir kümenin başka bir kümenin alt kümesi olup olmadığını belirlemek için <= operatörünü veya issubset() yöntemini kullanın.

s1 = {0, 1}
s2 = {0, 1, 2, 3}

print(s1 <= s2)
# True

print(s1.issubset(s2))
# True

Hem <= operatörü hem de issubset() yöntemi, eşdeğer kümeler için true değerini döndürür.

Bunun gerçek bir altküme olup olmadığını belirlemek için, eşdeğer kümeler için false döndüren <= operatörünü kullanın.

print(s1 <= s1)
# True

print(s1.issubset(s1))
# True

print(s1 < s1)
# False

Üst takım veya değil:>= operatör,issuperset()

Bir kümenin diğerinin üst kümesi olup olmadığını belirlemek için >= operatörünü veya issuperset()’i kullanın.

s1 = {0, 1}
s2 = {0, 1, 2, 3}

print(s2 >= s1)
# True

print(s2.issuperset(s1))
# True

Hem >= operatörü hem de issuperset() yöntemi, eşdeğer kümeler için true değerini döndürür.

Bunun gerçek bir üst küme olup olmadığını belirlemek için, eşdeğer kümeler için false döndüren >= operatörünü kullanın.

print(s1 >= s1)
# True

print(s1.issuperset(s1))
# True

print(s1 > s1)
# False

Karşılıklı asal olup olmadıklarının belirlenmesi:isdisjoint()

İki kümenin birbirine asal olup olmadığını belirlemek için isdisjoint() yöntemini kullanın.

s1 = {0, 1}
s2 = {1, 2}
s3 = {2, 3}

print(s1.isdisjoint(s2))
# False

print(s1.isdisjoint(s3))
# True