Modül dersleri (4/4)
Setler
küme, benzersiz, sırasız öğelerden oluşan bir koleksiyondur. Üç süper güç:
- Otomatik veri tekilleştirme: Aynı öğenin iki kez eklenmesinin hiçbir etkisi yoktur.
- O(1) üyelik testi:
x in smilyonlarca kullanıcıyla bile son derece hızlıdır öğelerin sayısı (sözcükler gibi karma tabanlıdır). - Küme işlemleri: birleşim, kesişim, fark, simetrik fark.
Bir set oluşturma
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
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
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
parole = {"ciao", "mondo", "python"}
"ciao" in parole # True O(1)
"java" not in parole # TrueKarşı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
'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.
İpucu göster
set(nums) kopyaları kaldırır.
3 denemeden sonra çözüm mevcut
Alıştırmayı gözden geçirin
"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.
İpucu göster
& kesişim, - fark.
3 denemeden sonra çözüm mevcut
Ek zorluk
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.
İpucu göster
& operatörünü veya set_a.intersection(set_b) yöntemini kullanabilirsiniz.
3 denemeden sonra çözüm mevcut