🐍

Introducere in Liste

Programare Python Începător 1 min citire 0 cuvinte

Introducere in Liste

Ce este o Lista?

O lista in Python este o colectie ordonata si mutabila de elemente. Listele pot contine elemente de orice tip si pot fi modificate dupa creare.

Crearea Listelor

# Lista goala
lista_goala = []
alta_lista_goala = list()

# Lista cu elemente
numere = [1, 2, 3, 4, 5]
fructe = ["mar", "para", "banana"]
mixta = [1, "text", 3.14, True, None]

# Lista din string
litere = list("Python")  # ['P', 'y', 't', 'h', 'o', 'n']

# Lista din range
numere = list(range(5))  # [0, 1, 2, 3, 4]

Accesarea Elementelor (Indexare)

Elementele sunt accesate prin index, incepand de la 0:

fructe = ["mar", "para", "banana", "kiwi"]
#          0       1        2        3     (indecsi pozitivi)
#         -4      -3       -2       -1     (indecsi negativi)

print(fructe[0])    # mar (primul)
print(fructe[2])    # banana
print(fructe[-1])   # kiwi (ultimul)
print(fructe[-2])   # banana (penultimul)

IndexError:

fructe = ["mar", "para", "banana"]
# print(fructe[3])   # IndexError: list index out of range
# print(fructe[-4])  # IndexError

Mutabilitatea Listelor

Listele sunt mutabile - elementele pot fi modificate:

fructe = ["mar", "para", "banana"]
fructe[1] = "portocala"
print(fructe)  # ['mar', 'portocala', 'banana']

Comparatie cu string-urile (imutabile):

# String - IMUTABIL
text = "Python"
# text[0] = "J"  # TypeError!

# Lista - MUTABILA
lista = list("Python")
lista[0] = "J"
print(lista)  # ['J', 'y', 't', 'h', 'o', 'n']

Lungimea Listei

fructe = ["mar", "para", "banana"]
print(len(fructe))  # 3

lista_goala = []
print(len(lista_goala))  # 0

Verificarea Apartenentei

Operatorul in verifica daca un element exista in lista:

fructe = ["mar", "para", "banana"]

print("mar" in fructe)      # True
print("kiwi" in fructe)     # False
print("kiwi" not in fructe) # True

Liste Nested (Imbricate)

Listele pot contine alte liste:

matrice = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print(matrice[0])      # [1, 2, 3]
print(matrice[0][1])   # 2
print(matrice[1][2])   # 6

# Modificare element nested
matrice[1][1] = 50
print(matrice[1])      # [4, 50, 6]

Concatenare si Repetitie

# Concatenare cu +
lista1 = [1, 2, 3]
lista2 = [4, 5, 6]
combinata = lista1 + lista2
print(combinata)  # [1, 2, 3, 4, 5, 6]

# Repetitie cu *
pattern = [0] * 5
print(pattern)  # [0, 0, 0, 0, 0]

zeros = [[0] * 3] * 2  # Atentie la referinte!
print(zeros)  # [[0, 0, 0], [0, 0, 0]]

Capcana cu repetitia listelor nested:

# GRESIT - subliste sunt acelasi obiect!
matrice = [[0] * 3] * 3
matrice[0][0] = 1
print(matrice)  # [[1, 0, 0], [1, 0, 0], [1, 0, 0]]

# CORECT - subliste independente
matrice = [[0] * 3 for _ in range(3)]
matrice[0][0] = 1
print(matrice)  # [[1, 0, 0], [0, 0, 0], [0, 0, 0]]

Compararea Listelor

a = [1, 2, 3]
b = [1, 2, 3]
c = [1, 2, 4]

print(a == b)   # True (valori egale)
print(a is b)   # False (obiecte diferite)

print(a < c)    # True (comparatie element cu element)
print([1, 2] < [1, 2, 3])  # True (lista mai scurta)

Iterarea prin Liste

fructe = ["mar", "para", "banana"]

# Iterare simpla
for fruct in fructe:
    print(fruct)

# Cu index (enumerate)
for i, fruct in enumerate(fructe):
    print(f"{i}: {fruct}")

# Cu range si len
for i in range(len(fructe)):
    print(f"{i}: {fructe[i]}")

Greseli Frecvente

1. Index out of range

lista = [1, 2, 3]
# lista[3]  # IndexError!
lista[2]    # OK - ultimul element

2. Confuzie referinta vs copie

a = [1, 2, 3]
b = a        # b refera ACELASI obiect!
b[0] = 99
print(a)     # [99, 2, 3] - modificat si a!

# Pentru copie independenta:
b = a[:]     # sau b = a.copy() sau b = list(a)

3. Modificare in timpul iterarii

# GRESIT
lista = [1, 2, 3, 4, 5]
for x in lista:
    if x % 2 == 0:
        lista.remove(x)  # Comportament imprevizibil!

Puncte Cheie pentru Examen

  • Listele sunt mutabile si ordonate
  • Indexare: [0] primul, [-1] ultimul
  • len() returneaza numarul de elemente
  • in verifica apartenenta
  • Listele pot contine orice tip de date
  • Atentie la referinte vs copii!

Intrebari de Verificare

  1. Ce returneaza [1, 2, 3][-1]?
  2. Ce tip de eroare apare la [1, 2][5]?
  3. Cum creezi o copie independenta a unei liste?
  4. Ce afiseaza len([[1, 2], [3, 4, 5]])?

📚 Articole Corelate