Școala Româno-Britanică
Modulul 2 Clasa a IX-a | Python

Ora 4: Metode ale clasei list

Ce vei învăța astăzi: append, insert, pop, remove, index, count, clear, extend, reverse, sort, copy

Rezultat practic: Aplici metodele clasei list (append, insert, pop, remove, sort, copy) pentru gestionarea colecțiilor (Competența 3.5).

Competența 3.5 Săptămâna 9

Înainte de a începe

De ce contează? Metodele clasei list (operații predefinite, apelate pe o listă, de forma v.metoda()) transformă o listă exact când și cum avem nevoie: adăugăm comenzi, ștergem produse, ordonăm și căutăm date. Orice aplicație reală de gestiune, inclusiv proiectul modulului, se construiește pe aceste metode.

Ce știi deja?

În lecția anterioară, „Clasa list din Python - caracteristici și operatori", ai învățat operatorii listei, între care in pentru apartenență. Cum ai verifica, cu in, dacă o valoare există într-o listă înainte de a o căuta sau șterge?

Ideea-cheie: Metodele care modifică lista (append, insert, extend, pop, remove, sort, reverse, clear) se apelează pe variabilă, de forma v.append(5), și, în cea mai mare parte, returnează None (valoarea specială care înseamnă „nimic", adică metoda nu produce un rezultat, ci modifică direct lista).
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

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ă: append, insert, extend
Metode care șterg: pop, remove, clear
Metode care caută: index, count
Metode care transformă: reverse, sort, copy

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.adaugaLaFinal(4) // append(4): v = [1, 2, 3, 4] AFISEAZA v v.insereaza(0, 0) // insert(0, 0): v = [0, 1, 2, 3, 4] AFISEAZA v v.adaugaToate([5, 6]) // extend([5, 6]): v = [0, 1, 2, 3, 4, 5, 6] AFISEAZA v
append, insert, extend
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.scoateUltimul() // pop(): x = 20 (ultimul), v = [10, 20, 30] AFISEAZA x AFISEAZA v v.stergePrimaAparitie(20) // remove(20): v = [10, 30] AFISEAZA v v.goleteste() // clear(): v = [] AFISEAZA v
pop, remove, clear
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.adaugaLaFinal(4) // append(4) v.insereaza(0, 0) // insert(0, 0) v.ordoneaza() // sort(): v = [0, 1, 2, 3, 4] AFISEAZA v x = v.scoateUltimul() // pop(): x = 4 AFISEAZA x v.stergePrimaAparitie(1) // remove(1): v = [0, 2, 3] AFISEAZA v AFISEAZA pozitia lui 3 // index(3) = 2 AFISEAZA de cate ori apare 3 // count(3) = 1
Sortare, inversare, căutare
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:
append pop remove sort clear

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?

Ai grijă la: nu scrie 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ă?

APLICARE ȘI REZOLVARE DE PROBLEME

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:
  1. Citim n și numerele în lista v
  2. Sortăm cu v.sort()
  3. 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:
  1. Citim lista v și numărul x
  2. Numărăm aparițiile cu v.count(x)
  3. 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ȚII PRACTICE

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.

Scrie pe caiet - De reținut

Titlul lecției

Ora 4: Metode ale clasei list

Definiția lecției

Metodele clasei list sunt operații predefinite, apelate pe o listă, de forma v.metoda(), care adaugă, șterg, caută sau transformă elementele. append(x) adaugă la final, insert(i, x) introduce pe poziția i, pop(i) scoate elementul de pe poziția i, remove(x) șterge prima apariție a valorii x, iar index(x) și count(x) caută poziția, respectiv numărul de apariții. sort() ordonează lista crescător, reverse() inversează ordinea, iar copy() creează o copie independentă. Atenție: metodele care modifică lista returnează None, deci v = v.sort() ar pierde lista. Un exemplu real: o aplicație de gestionare a comenzilor unui magazin folosește append() pentru o comandă nouă, remove() pentru a o șterge și sort() pentru a le ordona.

Definiții esențiale

Algoritmul cheie - pseudocod

v = [3, 1, 2] v.adaugaLaFinal(4) // append(4) v.insereaza(0, 0) // insert(0, 0) v.ordoneaza() // sort() AFISEAZA v // [0, 1, 2, 3, 4] x = v.scoateUltimul() // pop() v.stergePrimaAparitie(1) // remove(1) AFISEAZA pozitia lui 3 // index(3) AFISEAZA de cate ori apare 3 // count(3)

Algoritmul cheie - cod Python

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")

Greșeli comune de evitat

Sfaturi practice și trucuri

Exemplu practic

De unde întâlnim metodele în viața reală? O listă de cumpărături este gestionată cu metodele clasei list: adăugăm, ordonăm și ștergem produse:

cumparaturi = ["paine", "lapte"]
cumparaturi.append("branza")
cumparaturi.sort()
print(cumparaturi)
cumparaturi.remove("lapte")
print(cumparaturi)

După ordonare lista este ["branza", "lapte", "paine"], iar după ștergere rămâne ["branza", "paine"].