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

Ora 3: Clasa list din Python - caracteristici și operatori

Ce vei învăța astăzi: Indexare, apartenență, concatenare, multiplicare, comparații

Rezultat practic: Folosești operatorii clasei list (indexare, in, +, *, comparații) în programe Python (Competența 3.5).

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

Înainte de a începe

De ce contează? Operatorii clasei list sunt instrumentele zilnice ale oricărui program cu liste: verificăm apartenența (dacă o anumită valoare se află în listă) cu in, unim liste cu + și repetăm cu *. Îi folosești în aproape fiecare program de acum înainte.

Ce știi deja?

În lecția anterioară, „Stiva și coada", ai învățat cum funcționează LIFO și FIFO ca modele de organizare a datelor. Ce deosebește o listă obișnuită de stivă și coadă în ceea ce privește accesul la elemente?

Ideea-cheie: În Python lista este mutabilă (poate fi modificată după creare) și ordonată: o putem modifica după creare, iar operatorii +, *, in și comparațiile nu schimbă lista, ci produc un rezultat nou sau o verificare.
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

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: mutabilitate, index, ordine
Operatorul [] pentru accesul la elemente
Operatorii in și not in pentru apartenență
Concatenare (+), multiplicare (*) ș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:

Mutabilitate

Putem modifica elementele după crearea listei

Index

Fiecare element este accesat prin poziția lui, de la 0

Ordine

Se păstrează ordinea în care au fost introduse elementele

Exemplu: o listă mutabilă

v = [10, 20, 30] v[1] = 99 // inlocuim elementul de pe pozitia 1 AFISEAZA v // [10, 99, 30]
Modificăm elementul de pe poziția 1
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] AFISEAZA v + w // concatenare: [1, 2, 3, 4, 5] AFISEAZA v * 2 // multiplicare: [1, 2, 3, 1, 2, 3] AFISEAZA 2 in v // apartenenta: True AFISEAZA v == [1, 2, 3] // comparatie: True
Concatenare, multiplicare, apartenență, comparație
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:
[] in + * ==

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]?

Ai grijă la: operatorul + 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:

APLICARE ȘI REZOLVARE DE PROBLEME

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:
  1. Citim cele două liste a și b
  2. Parcurgem lista a și verificăm cu x in b dacă x apare și în b
  3. 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:
  1. Citim cele două liste a și b
  2. Le concatenăm cu a + b
  3. 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ȚII PRACTICE

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.

Scrie pe caiet - De reținut

Titlul lecției

Ora 3: Clasa list din Python - caracteristici și operatori

Definiția lecției

Lista din Python este o colecție mutabilă și ordonată de elemente: putem modifica, adăuga sau șterge elemente după crearea listei, iar ordinea lor este mereu respectată. Operatorii specifici simplifică mult programele: operatorul [] accesează elementul de pe o poziție, operatorul in verifică apartenența unei valori, operatorul + concatenează două liste într-o listă nouă, iar operatorul * repetă lista de un anumit număr de ori. Comparațiile ==, !=, <, > compară listele element cu element. Un exemplu real: o firmă ține lista produselor din vitrină și lista produselor din depozit; cu operatorul + obține rapid lista completă, fără a modifica listele inițiale.

Definiții esențiale

Algoritmul cheie - pseudocod

v = [1, 2, 3] w = [4, 5] AFISEAZA v + w // [1, 2, 3, 4, 5] AFISEAZA v * 2 // [1, 2, 3, 1, 2, 3] DACA 2 in v ATUNCI AFISEAZA "2 este in lista" DACA v == [1, 2, 3] ATUNCI AFISEAZA "listele coincid"

Algoritmul cheie - cod Python

v = [1, 2, 3]
w = [4, 5]

print(v + w)
print(v * 2)

if 2 in v:
    print("2 este in lista")

if v == [1, 2, 3]:
    print("listele coincid")

Greșeli comune de evitat

Sfaturi practice și trucuri

Exemplu practic

De unde întâlnim operatorii în viața reală? Un magazin are lista produselor din vitrină și lista celor din depozit. Pentru raportul zilnic, programul verifică dacă un produs există și unește cele două liste:

vitrina = ["caiet", "pix"]
depozit = ["ghiozdan", "stilou"]
print("Exista pix?", "pix" in vitrina)
print("Lista completa:", vitrina + depozit)

Programul răspunde „True" la verificarea apartenenței și afișează lista completă ["caiet", "pix", "ghiozdan", "stilou"], fără a schimba listele inițiale.