Sfaturi pentru Examenul de Python
Concepte Cheie de Reținut
1. Tipuri de Date
| Tip | Mutabil | Ordonat | Duplicate |
|---|---|---|---|
list |
Da | Da | Da |
tuple |
Nu | Da | Da |
dict |
Da | Da* | Chei: Nu |
set |
Da | Nu | Nu |
*din Python 3.7+
2. Operatori - Precedență
De la cea mai mare la cea mai mică:
**(asociativ la DREAPTA!)*,/,//,%+,-==,!=,<,>,<=,>=notandor
3. Slicing
lista[start:stop:pas]
start- indexul de început (inclusiv)stop- indexul de final (exclusiv)pas- câte elemente să sară
4. Mutabilitate
Imutabile: int, float, str, tuple, frozenset
Mutabile: list, dict, set
Greșeli Comune de Evitat
1. True vs true
# CORECT
x = True
y = False
# GREȘIT - NameError
x = true
y = false
2. = vs ==
# Atribuire
x = 5
# Comparație
if x == 5:
print("Egal")
3. Aliasing Liste
a = [1, 2, 3]
b = a # b referă același obiect!
# Pentru copie independentă:
b = a.copy()
b = a[:]
b = list(a)
4. Modificare vs Reatribuire
def f(L):
L.append(4) # Modifică originalul
L = [1, 2] # NU modifică originalul
5. Parametri Impliciti Mutabili
# GREȘIT
def f(lista=[]):
lista.append(1)
return lista
# CORECT
def f(lista=None):
if lista is None:
lista = []
lista.append(1)
return lista
Trucuri pentru Examen
1. Evaluează Mental
Pentru expresii cu operatori, scrie pașii:
2 ** 3 ** 2
= 2 ** (3 ** 2) # asociativ la dreapta
= 2 ** 9
= 512
2. Verifică Indexii
s = "Python"
# Index: 0 1 2 3 4 5
# Neg: -6-5-4-3-2-1
3. Gândește la Referințe
Când vezi y = x unde x e listă/dict, gândește: “acum y și x sunt același obiect”.
4. Chei de Dicționar
Întreabă-te: “Este hashable?” = “Este imutabil?”
Formule Utile
Slicing
L[::2] # Elemente din 2 în 2 (0, 2, 4, ...)
L[1::2] # Elemente din 2 în 2 de la 1 (1, 3, 5, ...)
L[::-1] # Lista inversată
L[a:b] # De la index a până la b-1
Range
range(5) # 0, 1, 2, 3, 4
range(2, 7) # 2, 3, 4, 5, 6
range(0, 10, 2) # 0, 2, 4, 6, 8
range(10, 0, -1) # 10, 9, 8, ..., 1
Conversii
int("42") # 42
int(3.9) # 3 (trunchiază!)
float("3.14") # 3.14
str(42) # "42"
list("abc") # ['a', 'b', 'c']
set([1,2,2]) # {1, 2}
Checklist Final
- [ ] Știu diferența între
//și/ - [ ] Știu că
**este asociativ la dreapta - [ ] Înțeleg mutabilitatea și referințele
- [ ] Știu ce tipuri pot fi chei de dicționar
- [ ] Pot citi și scrie list comprehensions
- [ ] Înțeleg diferența între
L.sort()șisorted(L) - [ ] Știu când funcțiile modifică argumentele