2.8. Torke¶
Torka je nepromjenjiv, uređen niz vrijednosti. Nakon stvaranja, stavke unutar nje ne mogu se dodavati, uklanjati ni mijenjati.
2.8.1. Stvaranje torki¶
Koristite zagrade (ili samo zareze) za stvaranje torke:
empty = ()
point = (3, 4)
triple = 1, 2, 3 # parentheses are optional
mixed = (1, "two", 3.14)
nested = ((1, 2), (3, 4))
2.8.1.1. Zamka s jednim elementom¶
Zagrade oko vrijednosti samo su zagrade; ono što zapravo čini torku jest zarez. Torka s jednim elementom treba završni zarez:
>>> (1)
1 # just an int in parens
>>> (1,)
(1,) # a one-element tuple
>>> type((1)), type((1,))
(<class 'int'>, <class 'tuple'>)
2.8.2. Duljina, indeksiranje i izrezivanje¶
Isto kao kod listi i nizova – len(), indeksiranje, izrezivanje, in te + / * svi rade na isti način:
>>> point = (3, 4, 5)
>>> len(point)
3
>>> point[0]
3
>>> point[1:]
(4, 5)
>>> 4 in point
True
>>> (1, 2) + (3, 4)
(1, 2, 3, 4)
2.8.3. Nepromjenjivost¶
Torke nemaju append, pop, sort ni bilo koju drugu metodu koja djeluje na mjestu. Indeksirano pridruživanje izaziva TypeError:
>>> point = (3, 4)
>>> point[0] = 99
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item assignment
Da biste „izmijenili” torku, izgradite novu s promijenjenim vrijednostima.
2.8.4. Raspakiravanje¶
Glavna supermoć torke jest raspakiravanje: pridruživanje svake stavke zasebnoj varijabli u jednoj naredbi.
Raspakiravanje veže svaki element torke za imenovanu varijablu u jednom pridruživanju.¶
>>> point = (3, 4)
>>> x, y = point
>>> x
3
>>> y
4
Desna strana može biti bilo koji iterabilni objekt – lista, niz, povratna vrijednost funkcije:
>>> a, b, c = "abc"
>>> a, b, c
('a', 'b', 'c')
Vodeća * skuplja „ostatak” raspakiravanja u listu:
>>> first, *rest = [10, 20, 30, 40]
>>> first
10
>>> rest
[20, 30, 40]
2.8.5. Više povratnih vrijednosti¶
Funkcija može vratiti torku da bi isporučila nekoliko vrijednosti odjednom; pozivatelj ih raspakirava pri primanju:
def size_of(rect):
return (rect[2] - rect[0], rect[3] - rect[1])
width, height = size_of((10, 20, 110, 140))
# width = 100, height = 120
Zagrade na return neobavezne su – goli return a, b također je torka.
2.8.6. Torka nasuprot listi¶
Praktičan vodič za to za čime posegnuti:
Torka za podatke fiksnog oblika, često heterogene:
(x, y)točke,(r, g, b)boje, više povratnih vrijednosti, argumenti funkcije zapakirani za kasniju uporabu.Lista za podatke promjenjive duljine, često homogene: lista mjerenja, red stavki za obradu, sve čemu očekujete dodavati.
Torke su također raspršive (sve dok je svaki element unutar njih raspršiv), pa se mogu koristiti kao ključevi u dict.