🐍

Exercitii cu Structuri de Date

Programare Python Intermediar 1 min citire 0 cuvinte

Exercitii cu Structuri de Date

Exercitiul 1: Eliminare Duplicate (Lista)

Problema: Elimina duplicatele pastrand ordinea.

def elimina_duplicate(lista):
    vazute = set()
    rezultat = []
    for elem in lista:
        if elem not in vazute:
            vazute.add(elem)
            rezultat.append(elem)
    return rezultat

# Test
print(elimina_duplicate([1, 2, 2, 3, 1, 4]))
# [1, 2, 3, 4]

Exercitiul 2: Frecventa Elementelor

Problema: Numara aparitiile fiecarui element.

def frecventa(lista):
    contor = {}
    for elem in lista:
        contor[elem] = contor.get(elem, 0) + 1
    return contor

# Test
print(frecventa(["a", "b", "a", "c", "b", "a"]))
# {'a': 3, 'b': 2, 'c': 1}

Exercitiul 3: Gasire Element Majoritar

Problema: Gaseste elementul care apare mai mult de n/2 ori.

def majoritar(lista):
    frecv = {}
    for elem in lista:
        frecv[elem] = frecv.get(elem, 0) + 1
        if frecv[elem] > len(lista) // 2:
            return elem
    return None

# Test
print(majoritar([1, 1, 2, 1, 3, 1]))  # 1
print(majoritar([1, 2, 3]))           # None

Exercitiul 4: Rotire Lista

Problema: Roteste lista cu k pozitii la dreapta.

def roteste(lista, k):
    if not lista:
        return lista
    k = k % len(lista)  # Handle k > len
    return lista[-k:] + lista[:-k]

# Test
print(roteste([1, 2, 3, 4, 5], 2))  # [4, 5, 1, 2, 3]

Exercitiul 5: Merge Dictionare

Problema: Combina doua dictionare, sumand valorile pentru cheile comune.

def merge_dicts(d1, d2):
    rezultat = d1.copy()
    for k, v in d2.items():
        rezultat[k] = rezultat.get(k, 0) + v
    return rezultat

# Test
a = {"x": 1, "y": 2}
b = {"y": 3, "z": 4}
print(merge_dicts(a, b))
# {'x': 1, 'y': 5, 'z': 4}

Exercitiul 6: Grupare dupa Proprietate

Problema: Grupeaza cuvintele dupa lungime.

def grupeaza_dupa_lungime(cuvinte):
    grupuri = {}
    for cuvant in cuvinte:
        lungime = len(cuvant)
        if lungime not in grupuri:
            grupuri[lungime] = []
        grupuri[lungime].append(cuvant)
    return grupuri

# Test
cuvinte = ["ana", "bob", "alice", "dan", "eve"]
print(grupeaza_dupa_lungime(cuvinte))
# {3: ['ana', 'bob', 'dan', 'eve'], 5: ['alice']}

Exercitiul 7: Intersectie Liste

Problema: Gaseste elementele comune din doua liste.

def intersectie(l1, l2):
    return list(set(l1) & set(l2))

# Pastrand ordinea din prima lista:
def intersectie_ordonata(l1, l2):
    set2 = set(l2)
    return [x for x in l1 if x in set2]

# Test
print(intersectie([1, 2, 3, 4], [3, 4, 5, 6]))
# [3, 4]

Exercitiul 8: Anagrame

Problema: Verifica daca doua cuvinte sunt anagrame.

def sunt_anagrame(s1, s2):
    return sorted(s1.lower()) == sorted(s2.lower())

# Test
print(sunt_anagrame("listen", "silent"))  # True
print(sunt_anagrame("hello", "world"))    # False

Puncte Cheie

  • Foloseste set pentru operatii de unicitate
  • dict.get(key, default) evita KeyError
  • Comprehensions simplifica transformarile
  • Atentie la cazurile limita (liste goale)

📚 Articole Corelate