Didaxis
lecție · Informatică

Mulțimi Python

Clasa set; apartenență, reuniune, intersecție, diferență și actualizare.

AprofundarePeste programa în vigoare, pentru cine vrea mai mult.
Actualizat la: 30 octombrie 2026
1pe scurtstratul 1 din 2 · rezumatul lecției

Pe scurt

Un set Python păstrează valori distincte și oferă teste de apartenență și operații de mulțimi. Din lista [2,1,2], set([2,1,2]) conține 1 și 2, fiecare o singură dată. Mulțimea nu promite o ordine stabilă a afișării; dacă ordinea contează, sortează elementele explicit.

Desen la lecția „Mulțimi Python”
2în detaliustratul 2 din 2 · pentru clasă și Bacalaureat

În detaliu

Clasa set din Python păstrează valori distincte, fără o ordine garantată, și oferă testul de apartenență în timp aproape constant. O mulțime se construiește cu acolade, {1, 2, 3}, sau cu set(...) dintr-o listă ori dintr-un șir; mulțimea goală se scrie set(), pentru că {} creează un dicționar gol. Elementele trebuie să fie imuabile (numere, texte, tupluri), deci o listă nu poate fi element al unei mulțimi. Operațiile de mulțimi au operatori și metode: reuniunea a | b, intersecția a & b, diferența a - b și diferența simetrică a ^ b, care conține elementele aflate în exact una dintre mulțimi. Operatorul <= testează incluziunea, iar x in a apartenența. Metoda a.add(x) adaugă un element (dacă există deja, nu se întâmplă nimic), a.discard(x) șterge un element fără eroare dacă lipsește, a.remove(x) ridică KeyError dacă elementul lipsește, iar a.update(b) adaugă toate elementele lui b. Pentru o ieșire previzibilă se folosește sorted, care întoarce o listă ordonată.

Exemplul 1 — operațiile de bază.

a = {1, 2, 3}
b = {2, 4}
print(sorted(a & b), sorted(a | b), sorted(a - b), sorted(a ^ b))

Intersecția conține doar 2, reuniunea conține 1, 2, 3, 4, diferența a - b conține 1 și 3, iar diferența simetrică conține 1, 3 și 4. Se afișează [2] [1, 2, 3, 4] [1, 3] [1, 3, 4]. Funcția sorted este folosită pentru ca ieșirea să fie ordonată; rezultatul ei este o listă, nu o mulțime.

Exemplul 2 — eliminarea duplicatelor. Din lista [3, 1, 3, 2, 1, 3], set(...) păstrează fiecare valoare o singură dată: {1, 2, 3}. Numărul valorilor distincte este len(set(lista)), adică 3. Dacă elementele trebuie să rămână în ordinea inițială a primei apariții, nu se poate folosi direct mulțimea: se parcurge lista și se adaugă la rezultat numai elementele care nu sunt încă în mulțimea celor văzute.

Exemplul 3 — modificarea unei mulțimi. Pentru u = {1, 2}, apelurile u.add(3) și u.add(2) lasă mulțimea {1, 2, 3}: a doua adăugare nu are efect. u.discard(9) nu face nimic, deoarece 9 lipsește, dar u.remove(9) ridică eroarea KeyError: 9. Expresia a | {5} produce o mulțime nouă și lasă a neschimbată, pe când a.update({5}) modifică a. Testul {1, 2} <= a este adevărat dacă toate elementele mulțimii din stânga aparțin lui a.

Exemplul 4 — apartenență și parcurgere. Testul x in a pe o mulțime nu parcurge elementele una câte una, spre deosebire de același test pe o listă; de aceea, când un șir de valori trebuie interogat des, se convertește într-o mulțime. Mulțimile pot fi parcurse cu for x in a, dar ordinea nu este cea a inserării. Două mulțimi sunt egale dacă au aceleași elemente, indiferent cum au fost construite: {1, 2} == {2, 1, 2} este adevărat. Numărul elementelor comune a două liste se află prin len(set(l1) & set(l2)): pentru [1, 2, 2, 5] și [2, 5, 7] rezultatul este 2.

Exemplul 5 — elemente care apar într-o singură listă. Pentru a = [1, 2, 3, 4] și b = [3, 4, 5], expresia sorted(set(a) ^ set(b)) dă [1, 2, 5], iar sorted(set(a) - set(b)) dă [1, 2]: diferența simetrică păstrează elementele din exact una dintre liste, pe când diferența păstrează numai pe cele din a. Încercarea de a crea {[1, 2], [3]} ridică TypeError: unhashable type: 'list', deoarece lista este modificabilă; tuplurile {(1, 2), (3,)} sunt acceptate, pentru că sunt imuabile. Elementele comune a trei liste se obțin prin intersecții succesive, set(a) & set(b) & set(c), iar rezultatul poate fi gol, caz în care se afișează set().

Greșeli frecvente

  • Greșit: {} creează o mulțime goală.
    Corect: creează un dicționar gol; mulțimea goală este set().
  • Greșit: într-un set, elementele rămân în ordinea în care au fost adăugate.
    Corect: ordinea nu este garantată; pentru ieșire previzibilă se folosește sorted.
  • Greșit: a | {5} modifică mulțimea a.
    Corect: construiește o mulțime nouă; update modifică mulțimea existentă.
în contul tăuPremium

Testează-te pe această lecție

Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.

Înainte și după

Surse și referințe

Redactare proprie, conform programei:

Documente consultate

  • Programele școlare noi de informatică pentru clasele X–XII (OMEC 4370/2026, MO 591 bis/20.07.2026), CNCE, anexa 2, p. 20–21; rocnee.eu
  • Python Software Foundation, Python Tutorial, capitolul 5.4, docs.python.org/3/tutorial/datastructures.html#sets

Desene: Redactare proprie (desen original), conform OMEC 4370/2026, Informatică X; rocnee.eu

lecțiile sunt gratuite

Ai citit lecția. Acum verifică-te.