tuple
)¶Připomeňte si
Seznam (typ
list
) se zapisuje do hranatých závorek[ ]
, jednotlivé položky jsou odděleny čárkami.
Datový typ n-tice (anglicky tuple
) je podobný jako seznam, zapisuje se do kulatých závorek ( )
, jednotlivé položky jsou odděleny čárkami.
cisla = (7, 5, 13, 1000, 2, -8)
Stejně jako u seznamů, položky n-tice mohou být různých typů.
vsehochut = (1.5, 80, "jelen", True, "a")
Při zápisu n-tic můžeme vynechat závorky:
cisla = 7, 5, 13, 1000, 2, -8
Indexování funguje pro n-tice stejně jako pro seznamy nebo znakové řetězce.
K jednotlivým položkám seznamu, je možné přistupovat pomocí jejich indexu zapsaného v hranatých závorkách. Čísluje se, tak jako vždy v Pythonu, od nuly.
0 1 2 3 4
vsehochut = (1.5, 80, "jelen", True, "a")
Například "jelen" je na indexu 2.
vsehochut[2]
'jelen'
Hlavní rozdíl mezi n-ticemi a seznamy spočívá v tom, že n-tice jsou neměnné (immutable).
Položky n-tice, narozdíl od seznamu, tedy není možné měnit, ani není možné další prvky do n-tice přidávat, nebo prvky z n-tice odebírat.
Práce s n-ticemi proto může být efektivnější - zabírají v paměti méně místa. Python totiž počítá s tím, že seznam se může rozšiřovat, a proto pro něj může v paměti rezervovat více místa.
cisla = (7, 5, 13, 1000, 2, -8)
cisla[1] = 50
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_59960/156816241.py in <module> 1 cisla = (7, 5, 13, 1000, 2, -8) ----> 2 cisla[1] = 50 TypeError: 'tuple' object does not support item assignment
cisla.append(10)
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_31108/4006261314.py in <module> ----> 1 cisla.append(10) AttributeError: 'tuple' object has no attribute 'append'
cisla.pop()
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_31108/3286556466.py in <module> ----> 1 cisla.pop() AttributeError: 'tuple' object has no attribute 'pop'
a, b = (2, 7)
print(a)
print(b)
2 7
S vynechanými závorkami:
a, b = 2, 7
print(a)
print(b)
2 7
Pokud potřebujeme projít všechny prvky n-tice, můžeme použít for
cyklus, stejně jako pro seznamy. for
cyklus v Pythonu prochází prvky nějaké sekvence, což n-tice splňuje.
Pokud nám nezáleží na konkrétních indexech prvků posloupnosti a potřebujeme pouze projít její prvky, můžeme použít for
cyklus přes prvky n-tice.
vsehochut = (1.5, 80, "jelen", True, "a")
for prvek in vsehochut:
print(prvek)
1.5 80 jelen True a
Pokud nám záleží na indexech jednotlivých prvků, použijeme for
cyklus s range
:
for i in range(len(vsehochut)):
print("index:", i, "hodnota:", vsehochut[i])
index: 0 hodnota: 1.5 index: 1 hodnota: 80 index: 2 hodnota: jelen index: 3 hodnota: True index: 4 hodnota: a
n-tice
seznam
body = [("Mirek", "Dušín"), ("Jindra", "Hojer"), ("Jarka", "Metelka")]
for ntice in body:
print(ntice[1], ntice[0])
Dušín Mirek Hojer Jindra Metelka Jarka
N-tici si můžeme ve for
cyklu rovnou nechat rozložit na jednotlivé proměnné:
for jmeno, prijmeni in body:
print(prijmeni, jmeno)
Dušín Mirek Hojer Jindra Metelka Jarka
Pomocí seznamu n-tic reprezentujte několik bodů v rovině.
Do vytvořeného seznamu přidejte další bod pomocí append
.
Vypište body, které mají x-ovou souřadnici 1.
Posuňte všechny body o 1 nahoru.