2.8. N-tice¶
N-tice je neměnná, uspořádaná posloupnost hodnot. Po vytvoření nelze položky uvnitř přidávat, odebírat ani měnit.
2.8.1. Vytváření n-tic¶
Pro vytvoření n-tice použijte závorky (nebo jen čárky):
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. Záludnost jednoprvkové n-tice¶
Závorky kolem hodnoty jsou jen závorky; co skutečně tvoří n-tici, je čárka. Jednoprvková n-tice potřebuje koncovou čárku:
>>> (1)
1 # just an int in parens
>>> (1,)
(1,) # a one-element tuple
>>> type((1)), type((1,))
(<class 'int'>, <class 'tuple'>)
2.8.2. Délka, indexování a řezy¶
Stejné jako u seznamů a řetězců – len(), indexování, řezy, in a + / * všechny fungují stejným způsobem:
>>> 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. Neměnnost¶
N-tice nemají append, pop, sort ani žádnou jinou metodu pracující na místě. Indexované přiřazení vyvolá 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
Chcete-li n-tici „upravit“, vytvořte novou se změněnými hodnotami.
2.8.4. Rozbalování¶
Hlavní supervlastností n-tice je rozbalování: přiřazení každé položky do samostatné proměnné v jednom příkazu.
Rozbalování naváže každý prvek n-tice na pojmenovanou proměnnou v jednom přiřazení.¶
>>> point = (3, 4)
>>> x, y = point
>>> x
3
>>> y
4
Pravá strana může být libovolný iterovatelný objekt – seznam, řetězec, návratová hodnota funkce:
>>> a, b, c = "abc"
>>> a, b, c
('a', 'b', 'c')
Úvodní * shromáždí „zbytek“ rozbalování do seznamu:
>>> first, *rest = [10, 20, 30, 40]
>>> first
10
>>> rest
[20, 30, 40]
2.8.5. Více návratových hodnot¶
Funkce může vrátit n-tici, aby najednou dodala několik hodnot; volající je při příchodu rozbalí:
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
Závorky u return jsou volitelné – holé return a, b je také n-tice.
2.8.6. N-tice vs seznam¶
Praktický návod, po čem sáhnout:
N-tice pro data pevného tvaru, často heterogenní: body
(x, y), barvy(r, g, b), více návratových hodnot, argumenty funkce zabalené pro pozdější použití.Seznam pro data proměnné délky, často homogenní: seznam měření, fronta položek ke zpracování, cokoli, k čemu očekáváte, že budete připojovat.
N-tice jsou také hashovatelné (pokud je každý prvek uvnitř hashovatelný), takže je lze použít jako klíče v dict.