🐍

Exerciții Practice cu Liste

Programare Python Începător 1 min citire 0 cuvinte

Exerciții Practice cu Liste

Exercițiul 1: Slicing

Problemă: Dată fiind lista L = [3, 6, 12, 24, 5, 10, 15, 20], extrage sublista [6, 24, 10, 20].

Soluție:

L = [3, 6, 12, 24, 5, 10, 15, 20]
rezultat = L[1::2]
print(rezultat)  # [6, 24, 10, 20]

Explicație: L[1::2] începe de la indexul 1 și selectează din 2 în 2.


Exercițiul 2: Mutabilitate

Problemă: Ce afișează următorul cod?

x = [1, 2, 3]
y = x
y.append(4)
print(x)

Răspuns: [1, 2, 3, 4]

Explicație: y = x face ca ambele variabile să refere același obiect. Modificarea prin y afectează și x.


Exercițiul 3: Eliminare element din listă imbricată

Problemă: Din lista L = [10, [3.14, True, [20, "test", 2.71]], "usor"], elimină "test".

Soluții posibile:

# Soluția 1: del
del L[1][2][1]

# Soluția 2: pop
L[1][2].pop(1)

# Soluția 3: slice assignment
L[1][2][1:2] = []

Atenție: L[1][2][1] = "" NU elimină elementul, ci îl înlocuiește cu șir gol!


Exercițiul 4: List Comprehension

Problemă: Creează lista pătratelor numerelor de la 0 la 4.

Soluție:

patrate = [x**2 for x in range(5)]
print(patrate)  # [0, 1, 4, 9, 16]

Exercițiul 5: Filtrare cu List Comprehension

Problemă: Din lista [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], extrage numerele pare.

Soluție:

numere = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
pare = [x for x in numere if x % 2 == 0]
print(pare)  # [2, 4, 6, 8, 10]

Exercițiul 6: Găsirea maximului din liste imbricate

Problemă: Găsește cel mai mare număr din L = [[10, 70, -100], [50], [1, 100, 70]].

Soluții:

L = [[10, 70, -100], [50], [1, 100, 70]]

# Soluția 1: max cu comprehension
lmax = max([max(r) for r in L])
print(lmax)  # 100

# Soluția 2: aplatizare
lmax = max([x for r in L for x in r])
print(lmax)  # 100

# GREȘIT: max(L) compară listele lexicografic!

Exercițiul 7: Sortare

Problemă: Care este diferența dintre sorted() și list.sort()?

Răspuns:

lista = [3, 1, 4, 1, 5]

# sorted() - returnează nouă listă, nu modifică originalul
noua = sorted(lista)
print(lista)  # [3, 1, 4, 1, 5] - neschimbată
print(noua)   # [1, 1, 3, 4, 5]

# list.sort() - modifică în loc, returnează None
lista.sort()
print(lista)  # [1, 1, 3, 4, 5] - modificată

Exercițiul 8: Ștergerea elementelor

Problemă: Cum elimini elementul de la indexul 2 din [10, 20, 30, 40, 50]?

Soluții:

L = [10, 20, 30, 40, 50]

# Soluția 1: del
del L[2]  # L devine [10, 20, 40, 50]

# Soluția 2: pop (și obține valoarea)
elem = L.pop(2)  # elem=30, L=[10, 20, 40, 50]

# Soluția 3: slicing
L = L[:2] + L[3:]  # [10, 20, 40, 50]

Teste pentru Examen

  1. Ce returnează [1,2,3,4,5][1:4]?

    • Răspuns: [2, 3, 4]
  2. Ce returnează [1,2,3] + [4,5]?

    • Răspuns: [1, 2, 3, 4, 5]
  3. Ce returnează [1,2,3] * 2?

    • Răspuns: [1, 2, 3, 1, 2, 3]
  4. Ce metodă adaugă un element la sfârșitul listei?

    • Răspuns: append()
  5. Ce metodă elimină și returnează ultimul element?

    • Răspuns: pop()

📚 Articole Corelate