Dvojrozmerné listy

Keď už vieme vnárať cykly, asi vás neprekvapí, že vnárať sa dajú aj listy :) Napríklad tu je list listov, ktorý obsahuje informácie o domácich zvieratách jedného z vedúcich.

zvierata = [
  ["Bax", "pes", "ciernobiely"],
  ["Kralovna", "macka", "biela"],
  ["Fero", "kocur", "hnedobiely"]
]

Všimnite si, že list zvierata obsahuje 3 ďalšie listy. Každý z týchto 3 listov popisuje jedno zviera. List konkrétneho zvieraťa obsahuje jeho meno, typ a farbu.

Vnorené listy indexujeme rovnako ako jednorozmerné. Keď teda zaindexujeme do listu zvierata, dostaneme list.

# zvierata = ...z predzchadzajuceho prikladu...

print(zvierata[1])
# Vystup (list): ["Kralovna", "macka", "biela"]

Tento list môžeme opäť indexovať.

# zvierata = ...z predzchadzajuceho prikladu...

# Farba prveho (nulteho) zvierata
print(zvierata[0][2])
# Vystup: "ciernobiely"

Skúsme teraz napísať program, ktorý vypíše mená všetkých zvierat.

# zvierata = ...z predzchadzajuceho prikladu...

for zviera in zvierata:
  print(zviera[0])

# Vystup (skrateny na jeden riadok):
# Bax Kralovna Fero

Vo for cykle prejdeme cez vsetky zvierata. Premenná zviera bude preto postupne obsahovať polia ["Bax", "pes", "ciernobiely"]["Fero", "kocur", "hnedobiely"]. Z týchto polí potom vypisujeme 0-tú hodnotu, čo je meno.

Ako načítať dvojrozmerné pole1 (tabuľku čísel)? Pomocou vnorených cyklov.

# Program dostane cisla m a n na jednom riadku, pocet riadkov a pocet stlpcov tabulky.
# Nasledne dostane jednotlive hodnoty tabulky.

rozmery = input().split()
# Trik: skratka za
# m = int(rozmery[0])
# n = int(rozmery[1])
m, n = int(rozmery[0]), int(rozmery[1])

tabulka = []
for i in range(m):
  riadokStr = input().split()
  riadokInt = []
  for x in riadokStr:
    riadokInt.append(int(x))
  tabulka.append(riadokInt)

print(tabulka)

# Vstup:
# 3 4
# 1 2 3 4
# 5 6 7 8
# 9 10 11 12
# Vystup:
# [
#  [1, 2, 3, 4],
#  [5, 6, 7, 8],
#  [9, 10, 11, 12]
# ]

  1. Dvojrozmerné pole môže znieť odstrašujúco, ale s tým, čo už vieme, je vysvetlenie hračka. Je to jednoducho list listov. Pole je list a dvojrozmerné sa volá preto, lebo je to v podstate tabuľka, v ktorej môžeme chodiť po riadkoch aj stĺpcoch.