Tupluri
Un tuplu (tuple) reprezintă o secvență de elemente care, în mare parte, seamănă cu o listă, cu excepția faptului că tuplul este un tip de date imuabil (immutable). Din acest motiv, nu putem adăuga sau elimina elemente într-un tuplu și nu îl putem modifica.
Pentru a crea un tuplu, se folosesc paranteze rotunde, în care sunt plasate valorile acestuia, separate prin virgule:
tom = ("Tom", 23)
print(tom) # ("Tom", 23)
De asemenea, pentru a defini un tuplu, putem pur și simplu să enumerăm valorile separate prin virgulă, fără a folosi paranteze:
tom = "Tom", 23
print(tom) # ("Tom", 23)
Dacă tuplul conține un singur element, după acest element trebuie pusă o virgulă:
tom = ("Tom",)
Pentru a crea un tuplu dintr-un alt set de elemente, de exemplu, dintr-o listă, putem transmite lista în funcția tuple(), care va returna tuplul:
data = ["Tom", 37, "Google"]
tom = tuple(data)
print(tom) # ("Tom", 37, "Google")
Cu ajutorul funcției încorporate len() putem obține lungimea unui tuplu:
tom = ("Tom", 37, "Google")
print(len(tom)) # 3
Accesarea elementelor unui tuplu
Accesarea elementelor dintr-un tuplu se face la fel ca în cazul unei liste, folosind indexul. Indexarea începe de la zero pentru elementele de la începutul listei și de la -1 pentru elementele de la sfârșitul listei:
tom = ("Tom", 37, "Google", "software developer")
print(tom[0]) # Tom
print(tom[1]) # 37
print(tom[-1]) # software developer
Însă, deoarece tuplul este un tip imuabil (immutable), nu putem modifica elementele acestuia. Astfel, următorul cod nu va funcționa:
tom[1] = "Tim"
Dacă este necesar, putem descompune un tuplu în variabile individuale:
name, age, company, position = ("Tom", 37, "Google", "software developer")
print(name) # Tom
print(age) # 37
print(position) # software developer
print(company) # Google
Obținerea subtuplurilor
Ca și în cazul listelor, putem obține o parte a unui tuplu sub forma unui alt tuplu:
tom = ("Tom", 37, "Google", "software developer")
# obținem subtuplul de la elementul 1 la 3 (exclusiv)
print(tom[1:3]) # (37, "Google")
# obținem subtuplul de la elementul 0 la 3 (exclusiv)
print(tom[:3]) # ("Tom", 37, "Google")
# obținem subtuplul de la elementul 1 până la ultimul element
print(tom[1:]) # (37, "Google", "software developer")
Tuplul ca parametru și rezultat al funcțiilor
Este deosebit de convenabil să folosim tupluri atunci când trebuie să returnăm mai multe valori dintr-o funcție. Când o funcție returnează mai multe valori, de fapt, returnează un tuplu:
def get_user():
name = "Tom"
age = 22
company = "Google"
return name, age, company
user = get_user()
print(user) # ("Tom", 37, "Google")
Când transmitem un tuplu unei funcții, cu ajutorul operatorului *, îl putem descompune în valori individuale care sunt transmise ca parametri funcției:
def print_person(name, age, company):
print(f"Name: {name} Age: {age} Company: {company}")
tom = ("Tom", 22)
print_person(*tom, "Microsoft") # Name: Tom Age: 22 Company: Microsoft
bob = ("Bob", 41, "Apple")
print_person(*bob) # Name: Bob Age: 41 Company: Apple
Parcurgerea tuplurilor
Pentru a parcurge un tuplu, se pot folosi ciclurile standard for și while. Folosind ciclul for:
tom = ("Tom", 22, "Google")
for item in tom:
print(item)
Folosind ciclul while:
tom = ("Tom", 22, "Google")
i = 0
while i < len(tom):
print(tom[i])
i += 1
Verificarea existenței unei valori
Ca și în cazul listei, folosind expresia element in tuplu, putem verifica existența unui element într-un tuplu:
user = ("Tom", 22, "Google")
name = "Tom"
if name in user:
print("Utilizatorul se numește Tom")
else:
print("Utilizatorul are un alt nume")