Lecții din modul (4/4)
Seturi
Un set este o colecție de elemente unice, neordonate. Trei superputeri:
- Deduplicare automată: adăugarea aceluiași element de două ori nu are efect.
- Testul de membru O(1):
x in seste extrem de rapid chiar și cu milioane de elemente (este bazat pe hash, cum ar fi dictele). - Operații de set: unire, intersecție, diferență, diferență simetrică.
Crearea unui set
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}Numai bretele {} creează un dicționar gol, nu un set: pentru un set gol
aveți nevoie de set().
Modificarea unui set
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 KeyErrorSetați operațiuni
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)Există și formulare de metodă (a.union(b), a.intersection(b), …) care în
În plus, acceptă orice iterabil, nu numai seturi.
Test de membru
parole = {"ciao", "mondo", "python"}
"ciao" in parole # True O(1)
"java" not in parole # TruePentru comparație: căutarea cu in în interiorul unui list este O(n) și pe lung
listează că este mult mai lent.
Frozen set: versiunea imuabilă
frozenset({1, 2, 3}) este versiunea hashable: poate fi o cheie dict sau o
element al altui set.
Setați operațiunile și performanța
Seturile sunt implementate ca tabele hash, ceea ce face testarea apartenenței (x in my_set) extrem de rapidă: rulează în timp constant O(1), spre deosebire de listele în care căutarea durează timp liniar O(n). În plus, acceptă operații algebrice precum unirea (|), intersecția (&) și diferența (-).
Încearcă
Având în vedere lista `nums = [1, 2, 2, 3, 3, 3, 4]`, construiți `unique_items` cu valorile unice (în orice ordine) și apoi calculați `count` ca len(unique_items). Evaluează „număr”.
Afișează indiciu
set(nums) elimină duplicatele.
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Având în vedere `a = {1, 2, 3, 4}` și `b = {3, 4, 5, 6}`, calculați intersecția în `articole_comune` și diferența a-b în `numai_a`. Evaluați tuplu `(common_items, only_a)`.
Afișează indiciu
& intersecție, - diferență.
Soluție disponibilă după 3 încercări
Provocare suplimentară
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.
Afișează indiciu
Puteți utiliza operatorul & sau metoda set_a.intersection(set_b).
Soluție disponibilă după 3 încercări