Nauč se Python > Kurzy > Hadí workshop pro PyLadies > Úvod do Pythonu > N-tice a rozbalování

N-tice #

Už víš, že pomocí return lze z funkce vracet hodnotu:

def dvojnasobek(x):
    return x * 2

Jak ale napsat funkci, která vrátí dvě hodnoty? Chci třeba napsat funkci, která spočítá podíl a zbytek po dělení.

Dvě hodnoty se dají vrátit jako seznam:

def podil_a_zbytek(a, b):
    podil = a // b
    zbytek = a % b

    return [podil, zbytek]

print(podil_a_zbytek(5, 2))

Lepší je ale vrátit dvojici čísel – dvě čísla oddělená čárkou:

def podil_a_zbytek(a, b):
    podil = a // b
    zbytek = a % b

    return podil, zbytek

print(podil_a_zbytek(5, 2))

Tomuhle se říká dvojice – a podobně se tvoří trojice, čtveřice, pětice, šestice, prostě n-tice (angl. tuple) hodnot. Funguje podobně jako seznam, ale nedá se měnit – např. se do ní nedají přidávat další prvky pomocí append. Když mám trojici, vždycky zůstane jako trojice.

Když máš n-tici, můžeš ji přiřazením rozbalit (angl. unpack) do několika proměnných:

podil, zbytek = podil_a_zbytek(5, 2)

print(podil)
print(zbytek)

N-tice mají spoustu využití, například:

  • Bod v prostoru má 3 souřadnice – trojice čísel!
  • Hrací karta má barvu a hodotu – dvojice čísla a řetězce, např. (2, 'piky')

Občas je potřeba dát n-tice do seznamu, např. abys uložila informace o celém balíčku hracích karet. V podobných případech je potřeba každou n-tici uzavřít do závorek, aby bylo jasné kde začíná a kde končí. Tady je seznam dvojic:

ruka = [(2, 'piky'), (10, 'kříže'), (8, 'káry')]

Když takový seznam máš, můžeš ho projít v cyklu for s pomocí rozbalování:

for hodnota, barva in ruka:
    print('Hraju', hodnota, 'a jsou to', barva)

Zip #

N-tice, respektive sekvenci n-tic, vrací funkce zip, která umožňuje projít zároveň několik seznamů, jejichž prvky si navzájem odpovídají:

veci = ['tráva', 'slunce', 'mrkev', 'řeka']
barvy = ['zelená', 'žluté', 'oranžová', 'modrá']
mista = ['na zemi', 'nahoře', 'na talíři', 'za zídkou']

for vec, barva, misto in zip(veci, barvy, mista):
    print(barva, vec, 'je', misto)

V tomhle cyklu dostaneš napřed trojici prvních prvků ze všech tří seznamů, pak trojici všech druhých prvků, pak třetích, a tak dále.

Shrnutí #

Co ses dozvěděla tentokrát?

  • Pomocí n-tice se dá spojit několik hodnot do jedné.
  • N-tice se dají rozbalit do několika proměnných.
  • Funkce zip vrací sekvenci n-tic, ve kterých jsou prvky z několika seznamů.

Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.