Ce vei învăța astăzi?
După această lecție vei înțelege caracteristicile clasei list din Python și vei folosi operatorii specifici listelor: indexare, apartenență, concatenare (unirea a două liste într-una singură, cu +), multiplicare (repetarea listei de un anumit număr de ori) și comparații.
Caracteristicile clasei list
Definiție: În Python, lista este o colecție mutabilă, ordonată de elemente, care poate conține valori de orice tip. Clasa list are trei caracteristici importante:
Putem modifica elementele după crearea listei
Fiecare element este accesat prin poziția lui, de la 0
Se păstrează ordinea în care au fost introduse elementele
Exemplu: o listă mutabilă
v = [10, 20, 30] v[1] = 99 print(v)
Observă: valoarea 20 a fost înlocuită cu 99. Listele pot fi modificate, spre deosebire de texte, care sunt imutabile.
Operatorii clasei list
Listele din Python lucrează cu operatori speciali, cu ajutorul cărora accesăm elemente, verificăm apartenența, combinăm și comparăm liste.
| Operator | Rol | Exemplu |
|---|---|---|
[] |
Acces la elementul de pe o anumită poziție | v[2] dă al treilea element |
in |
Verifică dacă o valoare se află în listă | 5 in v dă True sau False |
not in |
Verifică dacă o valoare NU se află în listă | 5 not in v |
+ |
Concatenarea a două liste | v + w le unește într-o singură listă |
* |
Multiplicarea (repetarea) listei | v * 2 repetă lista de două ori |
==, != |
Compară două liste element cu element | v == [1, 2, 3] |
<, > |
Comparare lexicografică a listelor | v < w |
Exemplu: operatorii în acțiune
v = [1, 2, 3] w = [4, 5] print(v + w) print(v * 2) print(2 in v) print(v == [1, 2, 3])
Observă: v + w dă [1, 2, 3, 4, 5], v * 2 dă [1, 2, 3, 1, 2, 3], 2 in v dă True, iar v == [1, 2, 3] dă True.
Cum comparăm listele
Python compară listele element cu element, în ordine. Comparația se oprește la prima pereche de elemente diferite.
Exemple de comparații
[1, 2, 3] == [1, 2, 3]dă True, pentru că toate elementele coincid[1, 2, 3] != [3, 2, 1]dă True, ordinea contează![1, 2] < [1, 3]dă True, pentru că 2 este mai mic decât 3
Exercițiu de completare
Completează enunțul despre operatori cu simbolurile potrivite:
Operatorul ______ permite accesul la un element după poziția lui. Operatorul ______ verifică apartenența unei valori la listă. Operatorul ______ concatenează două liste. Operatorul ______ repetă lista de un anumit număr de ori. Operatorul ______ compară două liste element cu element.
Bancă de cuvinte:
Test de înțelegere
Test rapid - operatorii listelor:
1. Ce produce v + w, pentru v = [1, 2] și w = [3, 4]?
2. Ce produce v * 3, pentru v = [1, 2]?
3. Ce valoare are 5 in [1, 2, 3]?
+ nu modifică listele inițiale, ci creează o listă nouă, deci salvează rezultatul într-o variabilă (v = v + w). Totodată, in parcurge lista, iar la comparațiile cu < și > Python compară element cu element, ca la cuvintele din dicționar.Aprofundare
Mutabilitate versus imutabilitate. Listele sunt mutabile: le putem modifica după creare. De aceea operatorul + nu modifică listele inițiale, ci creează o listă nouă, în timp ce v[0] = 5 schimbă lista existentă. Textele (string) sunt imutabile, deci nu putem scrie text[0] = 'a'. Această deosebire explică de ce multe programe preferă listele atunci când datele trebuie modificate frecvent.
Operatorul in parcurge lista. Verificarea x in v parcurge elementele unul câte unul până găsește valoarea. Pe o listă scurtă este instantanee, dar pe liste foarte mari trebuie avut în vedere că verificarea poate dura; în medie se verifică jumătate din elemente.
Slicing (tăierea listelor). Pe lângă operatorii învățați, Python permite extragerea unei subliste cu v[1:4] (elementele de la poziția 1 până la poziția 3), v[:3] (primele trei elemente) sau v[::2] (elementele de pe poziții pare). Slicing-ul creează întotdeauna o listă nouă.
Comparația lexicografică. La < și >, Python compară element cu element, de la stânga la dreapta, și se oprește la prima pereche diferită: [1, 2] < [1, 3] este True deoarece 2 este mai mic decât 3, exact ca la cuvintele din dicționar. Dacă toate elementele coincid, lista mai scurtă este considerată mai mică.
Multiplicarea cu liste goale. [0] * 0 produce lista goală [], iar v * 0 produce tot lista goală, prin „repetare de zero ori". Acest mecanism este folosit frecvent pentru inițializarea rapidă a listelor de frecvențe: fr = [0] * 11.
Quiz de consolidare
Quiz de consolidare - operatorii listelor:
1. Pentru a verifica dacă valoarea 5 se află într-o listă v folosim operatorul:
2. Ce produce v * 2, pentru v = [4, 5]?
3. Expresia [1, 2] == [1, 2] are valoarea:
PbInfo - Elemente comune
Enunț:
Cerință: Se citesc două liste de numere. Să se afișeze elementele din prima listă care apar și în a doua listă, folosind operatorul in.
Date de intrare:
Programul citește de la tastatură, pe două linii separate, elementele celor două liste, separate prin spații.
Date de ieșire:
Programul va afișa elementele din prima listă care apar și în a doua listă, în ordinea din prima listă.
Restricții și precizări:
n este un număr natural, cu 1 <= n <= 1000, iar elementele listei sunt numere întregi.
Exemplu:
Intrare:
1 2 3 4 2 4 6 8
Ieșire:
2 4
Cum gândim soluția:
- Citim cele două liste a și b
- Parcurgem lista a și verificăm cu
x in bdacă x apare și în b - Dacă da, afișăm x
Scrie soluția în Python:
Soluție corectă:
a = list(map(int, input().split()))
b = list(map(int, input().split()))
for x in a:
if x in b:
print(x, end=" ")
Ce învățăm: operatorul in ne spune dacă o valoare se află într-o listă, fără să o căutăm manual.
PbInfo - Concatenarea a două liste
Enunț:
Cerință: Se citesc două liste de numere. Să se afișeze lista obținută prin concatenarea celor două liste, cu operatorul +.
Date de intrare:
Programul citește de la tastatură, pe două linii separate, elementele celor două liste, separate prin spații.
Date de ieșire:
Programul va afișa toate elementele primei liste urmate de toate elementele celei de-a doua liste.
Restricții și precizări:
n este un număr natural, cu 1 <= n <= 1000, iar elementele listei sunt numere întregi.
Exemplu:
Intrare:
1 2 3 4 5 6
Ieșire:
1 2 3 4 5 6
Cum gândim soluția:
- Citim cele două liste a și b
- Le concatenăm cu
a + b - Afișăm rezultatul
Scrie soluția în Python:
Soluție corectă:
a = list(map(int, input().split())) b = list(map(int, input().split())) print(*(a + b))
Ce învățăm: operatorul + unește două liste într-una singură, păstrând ordinea elementelor.
Exercițiul Practic: Operatorii listelor
Sarcini de lucru
Completează următoarele sarcini pentru a folosi corect operatorii listelor
Sarcina 1: Apartenența în listă
Cerință: Scrie un program care citește o listă de numere, apoi un număr x, și verifică cu in (sau not in) dacă x se află în listă. Afișează un mesaj corespunzător.
Soluție pentru Sarcina 1:
v = list(map(int, input().split()))
x = int(input())
if x in v:
print(x, "se afla in lista")
else:
print(x, "nu se afla in lista")
Verifică: operatorul in returnează True sau False, exact ce ne trebuie într-o decizie if.
Sarcina 2: Dublarea conținutului
Cerință: Scrie un program care citește o listă de numere și afișează o listă cu conținutul dublat, folosind operatorul * (adică v * 2).
Soluție pentru Sarcina 2:
v = list(map(int, input().split())) print(*(v * 2))
Verifică: pentru intrarea 1 2 3, rezultatul este 1 2 3 1 2 3, adică lista repetată de două ori.