Liste, Functii si Organizarea Eficienta a Datelor
Structurile de date sunt fundamentul programarii eficiente. In aceasta lectie recapitulam cum sa organizam si manipulam colectii de date folosind liste si functii.
O lista este o colectie ordonata de elemente. Fiecare element are un index (pozitie) incepand de la 0.
note = [10, 8, 9, 7, 10]
note[0] = 10 | note[2] = 9 | note[-1] = 10 (ultimul)
| Operatie | Sintaxa | Exemplu | Rezultat |
|---|---|---|---|
| Creare lista | lista = [] |
note = [10, 8, 9] |
Lista cu 3 elemente |
| Accesare element | lista[index] |
note[0] |
10 |
| Adaugare la sfarsit | lista.append(val) |
note.append(7) |
[10, 8, 9, 7] |
| Stergere element | lista.remove(val) |
note.remove(8) |
[10, 9, 7] |
| Lungime lista | len(lista) |
len(note) |
3 |
| Sortare | lista.sort() |
note.sort() |
[7, 9, 10] |
# Creare si manipulare lista elevi = ["Ana", "Bogdan", "Carla"] # Adaugam un elev nou elevi.append("Dan") print(elevi) # ['Ana', 'Bogdan', 'Carla', 'Dan'] # Parcurgem lista for elev in elevi: print(f"Buna, {elev}!") # Cautam un element if "Ana" in elevi: print("Ana e in clasa!") # Numaratoare si suma note = [10, 8, 9, 7, 10] print("Total note:", len(note)) print("Suma:", sum(note)) print("Media:", sum(note) / len(note))
Functiile ne permit sa grupam cod care face un anumit lucru si sa-l reutilizam.
# Functie simpla fara parametri def salut(): print("Buna ziua!") salut() # Apelam functia # Functie cu parametri def salut_personalizat(nume): print(f"Buna, {nume}!") salut_personalizat("Maria") # Buna, Maria! # Functie care returneaza o valoare def calculeaza_media(note): if len(note) == 0: return 0 return sum(note) / len(note) notele_mele = [10, 9, 8, 10] media = calculeaza_media(notele_mele) print(f"Media ta este: {media}") # Media ta este: 9.25 # Functie cu parametri impliciti def putere(baza, exponent=2): return baza ** exponent print(putere(5)) # 25 (5^2) print(putere(2, 10)) # 1024 (2^10)
# Dictionar = colectie de perechi cheie-valoare elev = { "nume": "Ion Popescu", "varsta": 14, "clasa": "8B", "note": [10, 9, 8] } # Accesare valori print(elev["nume"]) # Ion Popescu print(elev["varsta"]) # 14 # Adaugare/Modificare elev["email"] = "ion@scoala.ro" elev["varsta"] = 15 # Parcurgere dictionar for cheie, valoare in elev.items(): print(f"{cheie}: {valoare}")
Lista - cand avem o colectie ordonata (note, elevi, produse)
Dictionar - cand avem date cu etichete (profil elev, setari)
Set - cand vrem valori unice (taguri, categorii)
Tuplu - cand datele nu trebuie modificate (coordonate)
Scrie un program care gestioneaza notele unui elev.
def adauga_nota(note, nota_noua): """Adauga o nota in lista daca e valida""" if 1 <= nota_noua <= 10: note.append(nota_noua) return True return False def calculeaza_media(note): """Calculeaza media notelor""" if len(note) == 0: return 0 return round(sum(note) / len(note), 2) def nota_maxima(note): """Gaseste nota maxima""" return max(note) if note else 0 def nota_minima(note): """Gaseste nota minima""" return min(note) if note else 0 # Utilizare notele_mele = [] adauga_nota(notele_mele, 10) adauga_nota(notele_mele, 8) adauga_nota(notele_mele, 9) adauga_nota(notele_mele, 7) print(f"Note: {notele_mele}") print(f"Media: {calculeaza_media(notele_mele)}") print(f"Maxim: {nota_maxima(notele_mele)}") print(f"Minim: {nota_minima(notele_mele)}")
Creeaza un catalog folosind dictionare.
# Catalog cu dictionare catalog = {} def adauga_elev(catalog, nume): """Adauga un elev nou in catalog""" if nume not in catalog: catalog[nume] = [] print(f"{nume} a fost adaugat!") else: print(f"{nume} exista deja!") def adauga_nota_elev(catalog, nume, nota): """Adauga nota unui elev""" if nume in catalog: catalog[nume].append(nota) else: print(f"Elevul {nume} nu exista!") def afiseaza_catalog(catalog): """Afiseaza tot catalogul""" print("\n=== CATALOG ===") for nume, note in catalog.items(): media = sum(note)/len(note) if note else 0 print(f"{nume}: {note} - Media: {media:.2f}") # Test adauga_elev(catalog, "Ana") adauga_elev(catalog, "Bogdan") adauga_nota_elev(catalog, "Ana", 10) adauga_nota_elev(catalog, "Ana", 9) adauga_nota_elev(catalog, "Bogdan", 8) afiseaza_catalog(catalog)
Numara de cate ori apare fiecare element intr-o lista.
def frecventa(lista): """Returneaza frecventa fiecarui element""" rezultat = {} for element in lista: if element in rezultat: rezultat[element] += 1 else: rezultat[element] = 1 return rezultat # Test voturi = ["Python", "Java", "Python", "C++", "Python", "Java"] rezultate = frecventa(voturi) print("Rezultate vot limbaje:") for limbaj, nr in rezultate.items(): print(f" {limbaj}: {nr} voturi")