Tupluri în Python
Ce este un Tuplu?
Tuplul este o colecție ordonată și imutabilă de elemente.
coordonate = (10, 20)
rgb = (255, 128, 0)
mixed = (1, "text", 3.14)
singleton = (42,) # Virgula e necesară pentru un element!
gol = ()
Diferențe față de Liste
| Caracteristică | Listă | Tuplu |
|---|---|---|
| Sintaxă | [1, 2, 3] |
(1, 2, 3) |
| Mutabilitate | Mutabilă | Imutabilă |
| Hashable | Nu | Da (dacă conține doar imutabile) |
| Performanță | Mai lentă | Mai rapidă |
Accesarea Elementelor
t = (10, 20, 30, 40, 50)
t[0] # 10
t[-1] # 50
t[1:3] # (20, 30)
Imutabilitate
t = (1, 2, 3)
# t[0] = 10 # TypeError: tuplu este imutabil!
# Dar poți reatribui variabila
t = (10, 20, 30) # OK - nou obiect
Excepție: Elemente mutabile în tuplu
t = ([1, 2], [3, 4])
t[0].append(3) # OK!
print(t) # ([1, 2, 3], [3, 4])
# Tuplul nu s-a schimbat, dar lista din interior da!
Operații cu Tupluri
# Concatenare
(1, 2) + (3, 4) # (1, 2, 3, 4)
# Multiplicare
(1, 2) * 3 # (1, 2, 1, 2, 1, 2)
# Apartenență
2 in (1, 2, 3) # True
# Funcții
len((1, 2, 3)) # 3
min((1, 2, 3)) # 1
max((1, 2, 3)) # 3
sum((1, 2, 3)) # 6
Unpacking (Despachetare)
# Despachetare simplă
coordonate = (10, 20)
x, y = coordonate
print(x, y) # 10 20
# Despachetare cu rest
numere = (1, 2, 3, 4, 5)
primul, *rest, ultimul = numere
# primul=1, rest=[2,3,4], ultimul=5
# Swap elegant
a, b = 10, 20
a, b = b, a # Acum a=20, b=10
Tupluri ca Chei de Dicționar
# Tuplurile HASHABLE pot fi chei
locatii = {
(44.4, 26.1): "București",
(46.8, 23.6): "Cluj"
}
locatii[(44.4, 26.1)] # "București"
Când să Folosești Tupluri?
- Date care nu trebuie modificate: coordonate, configurări
- Chei de dicționar: când ai nevoie de chei compuse
- Returnare valori multiple din funcții:
def min_max(lista):
return min(lista), max(lista)
minim, maxim = min_max([3, 1, 4, 1, 5])
- Performanță: tuplurile sunt mai rapide decât listele
De Reținut
Tuplurile sunt imutabile și hashable (dacă conțin doar elemente imutabile), ceea ce le face potrivite pentru chei de dicționar sau elemente de mulțime.
Întrebări de Verificare
- Cum creezi un tuplu cu un singur element?
- Ce se întâmplă când încerci
t[0] = 10pe un tuplu? - Poate un tuplu conține o listă? Și poate fi cheie de dicționar?
- Ce este tuple unpacking?