InfoBook.ro ← Harta anului
Modul 05c · Funcții Python & clasa list
Modul 05c · Conținut 3.5

Python: funcții gata incluse & clasa list

abs, round, len, min, max, sum — fără niciun import. Plus lista: operatori, metode, slicing. Tot ce cere programa la punctul 3.5, cu laboratoare în care testezi totul pe loc.

🎯 Obiectiv 1Folosești funcțiile built-in: abs, round, int/float, len, min, max, sum, sorted.
🎯 Obiectiv 2Stăpânești operatorii listei: indexare (și negativă!), slicing, in, +, *, comparare.
🎯 Obiectiv 3Aplici metodele: append, insert, pop, index, count, copy, sort — și eviți capcanele lor.
1

Funcții predefinite (built-in)

Vin cu Python — nu necesită niciun import. Cele mai folosite în clasa a IX-a:

abs(x) — valoare absolută

Distanța până la 0; merge cu int și float.

abs(-7) # 7
abs(-2.8) # 2.8

round(x, n) — rotunjire

La n zecimale (fără n: la întreg). Atenție: „rotunjire bancară" — 0.5 merge spre PAR!

round(3.14159, 2) # 3.14
round(2.5) # 2 (!) round(3.5) # 4

int(x) · float(x) · str(x)

Conversii. int() TRUNCHIAZĂ, nu rotunjește!

int(3.9) # 3 int("42") # 42
float("3.14") # 3.14 str(100) # "100"

math.sqrt(x) — radical

Necesită import math — sau trucul x ** 0.5 fără import.

import math
math.sqrt(25) # 5.0 25**0.5 # 5.0

len(x) — lungimea

Numărul de elemente dintr-o colecție (listă).

len([7, 9, 5, 10]) # 4
len([1, 2, 3]) # 3 len([]) # 0

min(…) · max(…)

Argumente separate SAU o singură colecție (listă).

min(5, 3, 8) # 3 max([7,9,5]) # 9
min([4, 2, 7]) # 2

sum(colecție) — suma

Suma elementelor; opțional o valoare de start. Media = sum/len!

sum([7,9,5,10,8]) # 39
sum(note) / len(note) # media

sorted · type · range

sorted() = listă NOUĂ sortată · type() = tipul · range() = secvențe.

sorted([5,2,8]) # [2,5,8]
list(range(0,10,2)) # [0,2,4,6,8]

🎛 Laborator built-in — testează orice funcție

x =
pe lista
Capcana round: Python folosește rotunjirea bancară — round(2.5) = 2, dar round(3.5) = 4 (mereu spre cifra PARĂ). C++-ul rotunjește 0.5 mereu în sus. La BAC lucrezi în C++, dar în laborator ține minte diferența!
2

Operatori pe liste

Programa, punctul 3.5: acces la element, apartenență, concatenare, multiplicare, relaționare.

🔪 Laborator de indexare și slicing — joacă-te cu felia

v =
v[ : : ]

indexare — și negativă!

v[0] = primul; v[-1] = ultimul, v[-2] = penultimul. Indexurile negative numără de la coadă.

fructe = ["mar","para","banana","kiwi"]
fructe[0] # "mar" fructe[-1] # "kiwi"

apartenența — in / not in

Există elementul în listă? Returnează True/False.

9 in [7, 9, 5] # True
6 not in [7, 9, 5] # True

concatenare — operatorul +

Unește două liste într-una NOUĂ; originalele rămân neschimbate.

[1,2,3] + [4,5] # [1,2,3,4,5]

multiplicare — operatorul *

Repetă elementele de n ori. Trucul clasic: lista de n zerouri.

[0] * 5 # [0,0,0,0,0]
v = [0] * n # init vector!

relaționare — compararea listelor

Lexicografic: element cu element, de la stânga, ca la dicționar.

[1,2] < [1,3] # True (2 < 3) [1,2] < [1,2,3] # True (mai scurtă)
[2] > [1,9,9] # True (2 > 1 decide imediat)
3

Metodele clasei list

Programa, punctul 3.5: index, count, pop, insert, append, copy, sort. Le apeși — lista vie de mai jos reacționează.

⚗ Laborator de metode — lista vie

v = x = poz =
alege o metodă 👆

⚠ Capcana .copy() — de ce b = a NU e o copie

GREȘIT: b = a — același balon, două sfori

a
b
[1, 2, 3]

CORECT: b = a.copy() — două liste separate

a →
[1, 2, 3]
b →
[1, 2, 3]
b = a leagă DOUĂ nume de ACEEAȘI listă. b = a.copy() creează o listă independentă.

📚 Tabel recapitulativ — metodele listei

MetodăCe faceReturnează
.append(x)adaugă x la finalNone
.insert(i, x)inserează x la poziția i, restul se mută la dreaptaNone
.pop(i)elimină și returnează elementul de la i (fără i: ultimul)elementul eliminat
.index(x)poziția primei apariții — EROARE dacă x nu există!int
.count(x)numărul aparițiilor lui x (0 dacă lipsește)int
.copy()copie independentălist (nouă)
.sort()sortează crescător IN-PLACE (reverse=True: descrescător)None
Două capcane de nota 10:x = note.sort() → x va fi None! Vrei o copie sortată? x = sorted(note). ② .index(x) pe un element inexistent aruncă eroare — verifică întâi cu if x in v:.
4

List comprehensions — construire rapidă

O listă întreagă, dintr-o singură expresie. Foarte „pythonic" — și foarte util la teme.

⚡ Încearcă șabloanele clasice

Anatomia: [expresie for element in sursă if condiție] — „ia fiecare element din sursă, păstrează-l dacă trece condiția, transformă-l cu expresia". Partea cu if e opțională.
5

Exerciții rezolvate

Cinci probleme care combină funcțiile și metodele de mai sus.

1 · Media notelor (sum, len, round)

1n = int(input())
2note = []
3for i in range(n):
4 note.append(int(input()))
5media = sum(note) / len(note)
6print(round(media, 2))

5 note: 7 9 5 10 8 → 7.8

2 · Eliminarea duplicatelor (in, append)

1v = list(map(int, input().split()))
2unice = []
3for x in v:
4 if x not in unice:
5 unice.append(x)
6print(unice)

3 1 4 1 5 3 → [3, 1, 4, 5] — ordinea primei apariții

3 · Intersecția a două liste (in)

1a = list(map(int, input().split()))
2b = list(map(int, input().split()))
3comune = []
4for x in a:
5 if x in b and x not in comune:
6 comune.append(x)
7print(comune)

1 2 3 4 / 3 4 5 6 → [3, 4]

4 · Frecvența elementelor (count)

1v = list(map(int, input().split()))
2afisate = []
3for x in v:
4 if x not in afisate:
5 print(x, "apare de", v.count(x), "ori")
6 afisate.append(x)

3 1 3 2 1 3 → 3 apare de 3 ori · 1 de 2 · 2 de 1. (Anticipează vectorul de frecvențe din M08!)

5 · Rotire la stânga cu k poziții (slicing!)

1v = list(map(int, input().split()))
2k = int(input())
3k = k % len(v) # în caz că k > len(v)
4rezultat = v[k:] + v[:k] # feliile schimbă locul!
5print(rezultat)

1 2 3 4 5, k=2 → [3, 4, 5, 1, 2] — o linie de slicing în loc de bucle întregi.

6

Test interactiv — funcții Python & liste

8 întrebări. Fiecare răspuns e într-una din secțiunile de mai sus.

7

Fișa de sinteză

Python-ul de zi cu zi, pe scurt.

Built-in fără import: abs, round, int/float/str, len, min, max, sum, sorted, type, range.
round = rotunjire bancară (2.5 → 2!); int() trunchiază, nu rotunjește.
Media = sum(v) / len(v) — cel mai frecvent combo din teme.
Indexare negativă: v[-1] = ultimul. Slicing: v[start:stop:pas], stop exclusiv; v[::-1] inversează.
Operatori: in (apartenență), + (concatenare), * (repetare — [0]*n!), comparare lexicografică.
Metode: append, insert, pop, index, count, copy, sort — append/insert/sort returnează None!
b = a NU copiază — leagă două nume de aceeași listă. Copie reală: b = a.copy().
Citire rapidă: v = list(map(int, input().split())) — reflex pentru orice temă Python.
Exersează pe pbinfo.ro:
#10 · ușoară

maxim2

Se citesc două numere — afișați maximul lor. (max)

Rezolvă pe pbinfo.ro →
#43 · ușoară

sumac

Suma elementelor dintr-o listă. (sum, len)

Rezolvă pe pbinfo.ro →
#390 · medie

ordonare

Sortați un vector crescător. (.sort)

Rezolvă pe pbinfo.ro →
#411 · medie

cautare

Căutați un element într-un vector. (in, .index)

Rezolvă pe pbinfo.ro →
← anteriorModul 05b · Funcții C++ & STL urmează →Modul 06 · Biblioteci