🐍

Mulțimi (Set) în Python

Programare Python Intermediar 1 min citire 0 cuvinte

Mulțimi (Set) în Python

Ce este o Mulțime?

Mulțimea este o colecție neordonată de elemente unice, mutabilă.

numere = {1, 2, 3, 4, 5}
fructe = {"mar", "para", "banana"}
goala = set()  # NU {}! Asta e dicționar gol!

Caracteristici

  1. Fără duplicate:
s = {1, 2, 2, 3, 3, 3}
print(s)  # {1, 2, 3}
  1. Neordonată - nu suportă indexare:
s = {1, 2, 3}
# s[0]  # TypeError!
  1. Elemente hashable:
s = {1, "text", (1, 2)}  # OK
# s = {[1, 2]}  # TypeError - liste nu sunt hashable

Operații cu Mulțimi

Adăugare și eliminare

s = {1, 2, 3}

s.add(4)        # {1, 2, 3, 4}
s.add(2)        # {1, 2, 3, 4} - 2 există deja

s.remove(2)     # {1, 3, 4} - KeyError dacă nu există
s.discard(10)   # Nu face nimic dacă nu există

elem = s.pop()  # Elimină un element aleatoriu
s.clear()       # set()

Operații matematice

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

# Reuniune
a | b           # {1, 2, 3, 4, 5, 6}
a.union(b)      # {1, 2, 3, 4, 5, 6}

# Intersecție
a & b           # {3, 4}
a.intersection(b)  # {3, 4}

# Diferență
a - b           # {1, 2}
a.difference(b) # {1, 2}

# Diferență simetrică
a ^ b           # {1, 2, 5, 6}
a.symmetric_difference(b)

Comparații

a = {1, 2, 3}
b = {1, 2, 3, 4, 5}
c = {1, 2, 3}

a <= b    # True - a este submulțime a lui b
a < b     # True - a este submulțime proprie
a == c    # True - mulțimi egale
a.issubset(b)      # True
b.issuperset(a)    # True
a.isdisjoint({4, 5}) # True - fără elemente comune

Conversii

# Listă la mulțime (elimină duplicate)
lista = [1, 2, 2, 3, 3, 3]
multime = set(lista)  # {1, 2, 3}

# Mulțime la listă
lista = list(multime)  # [1, 2, 3] (ordine poate varia)

# String la mulțime
caractere = set("hello")  # {'h', 'e', 'l', 'o'}

Frozen Set (Mulțime Imutabilă)

fs = frozenset([1, 2, 3])
# fs.add(4)  # AttributeError - imutabil!

# Poate fi cheie de dicționar
d = {fs: "valoare"}

Cazuri de Utilizare

Eliminare duplicate

numere = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
unice = list(set(numere))

Verificare apartenență rapidă

valide = {"admin", "user", "guest"}
rol = "admin"

if rol in valide:  # O(1) vs O(n) pentru liste
    print("Rol valid")

Găsire elemente comune

lista1 = [1, 2, 3, 4, 5]
lista2 = [4, 5, 6, 7, 8]
comune = set(lista1) & set(lista2)  # {4, 5}

De Reținut

Mulțimile nu permit duplicate și oferă verificare de apartenență în O(1). Folosește set() pentru mulțime goală, nu {} (care creează dicționar).

Întrebări de Verificare

  1. Ce returnează len({1, 2, 2, 3, 3, 3})?
  2. Cum creezi o mulțime goală?
  3. Care este diferența dintre remove() și discard()?
  4. Ce tip de elemente pot fi în mulțime?

📚 Articole Corelate