Ce vei învăța astăzi?
După această lecție vei folosi cu încredere metodele clasei list: metode care adaugă, șterg, caută și transformă elementele unei liste.
Metode care adaugă elemente
append(x) adaugă valoarea x la sfârșitul listei. insert(i, x) introduce valoarea x pe poziția i. extend(lista) adaugă toate elementele unei alte liste, la sfârșit.
Exemplu: adăugarea de elemente
v = [1, 2, 3] v.append(4) print(v) v.insert(0, 0) print(v) v.extend([5, 6]) print(v)
Observă: append adaugă la final, insert adaugă pe poziția dorită (aici poziția 0), iar extend adaugă mai multe elemente deodată.
Metode care șterg elemente
pop(i) scoate elementul de pe poziția i (fără argument, îl scoate pe ultimul). remove(x) șterge prima apariție a valorii x. clear() golește complet lista.
Exemplu: ștergerea de elemente
v = [10, 20, 30, 20]
x = v.pop()
print("Scos:", x)
print(v)
v.remove(20)
print(v)
v.clear()
print(v)
Observă: pop scoate ultimul element, remove șterge prima apariție a valorii 20, iar clear golește lista.
Metode care caută și transformă
index(x) returnează poziția primei apariții a valorii x. count(x) numără de câte ori apare x în listă. reverse() inversează ordinea. sort() ordonează lista crescător. copy() creează o copie a listei.
| Metodă | Ce face? | Exemplu |
|---|---|---|
append(x) |
Adaugă x la final | v.append(7) |
insert(i, x) |
Introduce x pe poziția i | v.insert(1, 7) |
extend(w) |
Adaugă elementele din w la final | v.extend([7, 8]) |
pop() |
Scoate ultimul element și îl returnează | x = v.pop() |
remove(x) |
Șterge prima apariție a valorii x | v.remove(7) |
clear() |
Golește lista | v.clear() |
index(x) |
Returnează poziția primei apariții a lui x | p = v.index(7) |
count(x) |
Returnează numărul de apariții ale lui x | c = v.count(7) |
reverse() |
Inversează ordinea elementelor | v.reverse() |
sort() |
Ordonează lista crescător | v.sort() |
copy() |
Creează o copie a listei | w = v.copy() |
Exemplu complet: metodele în acțiune
v = [3, 1, 2]
v.append(4)
v.insert(0, 0)
v.sort()
print(v)
x = v.pop()
print("Scos:", x)
v.remove(1)
print(v)
print("Pozitia lui 3:", v.index(3))
print("Apare de:", v.count(3), "ori")
Observă: lista se modifică pas cu pas: [0, 1, 2, 3, 4], apoi se scoate 4, apoi se șterge 1, iar metodele de căutare ne dau informații despre elemente.
Exercițiu de completare
Completează enunțul cu metodele potrivite:
v.______(5) adaugă valoarea 5 la sfârșitul listei. v.______() scoate ultimul element al listei. v.______(3) șterge prima apariție a valorii 3. v.______() ordonează lista crescător. v.______() golește complet lista.
Bancă de cuvinte:
Test de înțelegere
Test rapid - metodele listelor:
1. Care metodă adaugă un element la finalul listei?
2. Care metodă sortează lista crescător?
3. Care metodă șterge prima apariție a unei valori?
v = v.sort(): metodele care modifică lista returnează None, deci ai pierde lista. Totodată, w = v nu copiază lista, ci creează un al doilea nume pentru aceeași listă; pentru o copie independentă (o listă separată, care nu se schimbă când se schimbă originalul) folosește w = v.copy().Aprofundare
Metodele care modifică lista nu returnează valoare. append(), sort(), reverse(), remove() și clear() modifică lista pe loc și returnează None. Dacă scrii v = v.sort(), vei pierde lista! Metodele care returnează valori sunt pop() (elementul scos), index() (poziția) și count() (numărul de apariții), iar copy() returnează o listă nouă.
Copierea versus atribuirea. w = v nu creează o listă nouă: cele două variabile indică aceeași listă, deci orice modificare prin w se vede și prin v. Pentru o listă independentă folosim w = v.copy(). Acesta este unul dintre cele mai frecvente motive de erori subtile în programe reale.
Sortarea descrescătoare și după criterii. sort() ordonează crescător; pentru ordine descrescătoare folosim sort(reverse=True). Pentru criterii mai complexe, parametrul key primește o funcție: produse.sort(key=lambda p: p[1]) sortează după al doilea element al fiecărei subliste, de exemplu după preț.
Cazuri particulare la căutare. remove(x) și index(x) produc ValueError dacă valoarea nu există în listă. Verificăm întâi cu if x in v: înainte de a folosi aceste metode. De asemenea, remove(x) șterge doar prima apariție; pentru a șterge toate aparițiile trebuie o parcurgere sau while x in v: v.remove(x).
Aplicare practică. Gestionarea stocurilor dintr-un magazin folosește exact aceste metode: append() pentru produse noi, remove() pentru produse epuizate, sort() pentru afișarea ordonată și count() pentru produse duplicate.
Quiz de consolidare
Quiz de consolidare - metodele listelor:
1. Care metodă inserează un element la o poziție dată din listă?
2. Care metodă returnează poziția primei apariții a unei valori?
3. Care metodă numără de câte ori apare o valoare în listă?
PbInfo - Sortare listă
Enunț:
Cerință: Se citește numărul natural n, apoi n numere întregi. Să se sorteze lista crescător, folosind metoda sort(), și să se afișeze elementele sortate.
Date de intrare:
Programul citește de la tastatură numărul n, apoi pe linia următoare cele n numere, separate prin spații.
Date de ieșire:
Programul va afișa numerele sortate crescător, separate prin spații.
Restricții și precizări:
n este un număr natural, cu 1 <= n <= 1000, iar elementele listei sunt numere întregi.
Exemplu:
Intrare:
5 40 10 30 50 20
Ieșire:
10 20 30 40 50
Cum gândim soluția:
- Citim n și numerele în lista v
- Sortăm cu
v.sort() - Afișăm lista sortată
Scrie soluția în Python:
Soluție corectă:
n = int(input()) v = list(map(int, input().split())) v.sort() print(*v)
Ce învățăm: metoda sort() ordonează lista crescător, direct, fără a scrie algoritmul de sortare.
PbInfo - Numărarea aparițiilor unei valori
Enunț:
Cerință: Se citește o listă de numere, apoi un număr x. Să se afișeze de câte ori apare x în listă, folosind metoda count().
Date de intrare:
Programul citește de la tastatură, pe prima linie, numerele listei, iar pe a doua linie numărul x.
Date de ieșire:
Programul va afișa numărul de apariții ale valorii x în listă.
Restricții și precizări:
n este un număr natural, cu 1 <= n <= 1000, iar elementele listei sunt numere întregi.
Exemplu:
Intrare:
2 4 2 6 2 8 2
Ieșire:
3
Cum gândim soluția:
- Citim lista v și numărul x
- Numărăm aparițiile cu
v.count(x) - Afișăm rezultatul
Scrie soluția în Python:
Soluție corectă:
v = list(map(int, input().split())) x = int(input()) print(v.count(x))
Ce învățăm: metoda count() numără aparițiile unei valori fără să parcurgem noi lista cu un contor.
Exercițiul Practic: Metodele în programe reale
Sarcini de lucru
Completează următoarele sarcini pentru a folosi corect metodele clasei list
Sarcina 1: Lista de sarcini (to-do)
Cerință: Scrie un program care construiește o listă de sarcini: citește 3 sarcini și le adaugă cu append(), apoi șterge una dintre ele cu remove() și afișează lista finală.
Soluție pentru Sarcina 1:
sarcini = []
sarcini.append("Tema la matematica")
sarcini.append("Recapitulare la informatica")
sarcini.append("Citit 20 de pagini")
sarcini.remove("Recapitulare la informatica")
print(sarcini)
Verifică: append() adaugă la final, iar remove() șterge sarcina cu valoarea dată.
Sarcina 2: Inserare și ștergere pe poziții
Cerință: Scrie un program care citește o listă, apoi un număr x și o poziție p. Introdu x pe poziția p cu insert(p, x), apoi șterge elementul de pe poziția 0 cu pop(0) și afișează lista finală.
Soluție pentru Sarcina 2:
v = list(map(int, input().split())) x = int(input()) p = int(input()) v.insert(p, x) v.pop(0) print(*v)
Verifică: insert(p, x) pune x pe poziția p, iar pop(0) scoate primul element al listei.