Ana içeriğe geç
Modül 3 · Ders 4 ders 4Kurstaki 12/36~10 min
Modül dersleri (4/4)

Setler

küme, benzersiz, sırasız öğelerden oluşan bir koleksiyondur. Üç süper güç:

  1. Otomatik veri tekilleştirme: Aynı öğenin iki kez eklenmesinin hiçbir etkisi yoktur.
  2. O(1) üyelik testi: x in s milyonlarca kullanıcıyla bile son derece hızlıdır öğelerin sayısı (sözcükler gibi karma tabanlıdır).
  3. Küme işlemleri: birleşim, kesişim, fark, simetrik fark.

Bir set oluşturma

Python
vuoto = set()           # ATTENZIONE: {} è un dict vuoto, non un set!
numeri = {1, 2, 3}
da_lista = set([1, 1, 2, 3, 3, 3])   # {1, 2, 3}

Tek başına parantezler {} bir küme değil, boş bir sözlük oluşturur: boş bir küme için set()'ya ihtiyacınız var.

Bir seti değiştirme

Python
s = {1, 2, 3}
s.add(4)         # {1, 2, 3, 4}
s.add(1)         # nessun effetto (già presente)
s.discard(99)    # rimuove se presente, silenzioso altrimenti
s.remove(2)      # rimuove o solleva KeyError

İşlemleri ayarla

Python
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

a | b    # {1, 2, 3, 4, 5, 6}     unione
a & b    # {3, 4}                  intersezione
a - b    # {1, 2}                  differenza (in a ma non in b)
a ^ b    # {1, 2, 5, 6}            differenza simmetrica (xor)

Ayrıca yöntem formları da vardır (a.union(b), a.intersection(b), …) ek olarak, yalnızca kümeleri değil, yinelenebilir herhangi bir öğeyi kabul edin.

Üyelik testi

Python
parole = {"ciao", "mondo", "python"}
"ciao" in parole       # True   O(1)
"java" not in parole   # True

Karşılaştırma için: list içinde in ile arama yapmak O(n)'dir ve uzundur çok daha yavaş olduğunu listeler.

Dondurulmuş set: değişmez versiyon

frozenset({1, 2, 3}) hash edilebilir versiyondur: bir dict anahtarı veya bir başka bir kümenin elemanı.

İşlemleri ve performansı ayarlayın

Kümeler karma tabloları olarak uygulanır, bu da üyelik testini (x in my_set) son derece hızlı hale getirir: aramanın doğrusal zaman O(n) aldığı listelerden farklı olarak O(1) sabit zamanında çalışır. Ayrıca birleşim (|), kesişim (&) ve fark (-) gibi cebirsel işlemleri desteklerler.

Deneyin

Egzersiz#python.m3.l4.e1
Denemeler: 0Yükleniyor…

'Nums = [1, 2, 2, 3, 3, 3, 4]' listesi göz önüne alındığında, benzersiz değerlerle (herhangi bir sırayla) 'unique_items' oluşturun ve ardından 'count'u len(unique_items) olarak hesaplayın. 'Sayımı' değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

set(nums) kopyaları kaldırır.

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#python.m3.l4.e2
Denemeler: 0Yükleniyor…

"a = {1, 2, 3, 4}" ve "b = {3, 4, 5, 6}" verildiğinde, kesişimi "ortak_öğeler" olarak ve a-b farkını "sadece_a" olarak hesaplayın. `(common_items, only_a)` tuple'ını değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

& kesişim, - fark.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#python.m3.l4.e3
Denemeler: 0Yükleniyor…

Given two sets `set_a = {1, 2, 3}` and `set_b = {2, 3, 4}`, calculate the mathematical intersection of the two sets (their common elements). Store the resulting set in `common_elements` and evaluate it.

Düzenleyici yükleniyor…
İpucu göster

& operatörünü veya set_a.intersection(set_b) yöntemini kullanabilirsiniz.

3 denemeden sonra çözüm mevcut