NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 3 - Vícerozměrné seznamy v Pythonu

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Jarda Antoš
Člen
Avatar
Jarda Antoš:21.1.2021 14:16

Myslim, ze ukazka incializace zubateho pole neodpovida obrazku, ze?

Kdyz si provedu test (psano v Python 2.7, proto nejsou printy jako funkce):

def vypisPolePoli(pole):
    for seznam in pole:
        for prvek in seznam:
            print prvek,
        print " "


kinosal = []

for i in range(5):
    temp = []
    for j in range(5):
        temp.append(0)
    kinosal.append(temp)

# Prostedek
kinosal[2][2] = 1
# 4. radek
for i in range(1, 4):
    kinosal[3][i] = 1
# Posledni radek
for j in range(0, 5):
    kinosal[4][j] = 1


kinosal2 = [[0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0],
           [0, 0, 1, 0, 0],
           [0, 1, 1, 1, 0],
           [1, 1, 1, 1, 1]]



zubate = [[15, 2, 8, 5, 3],
           [3, 3, 7],
           [9, 1, 16, 13],
           [],
           [5]]

vypisPolePoli(kinosal)
print ""
vypisPolePoli(kinosal2)
print ""
vypisPolePoli(zubate)

tak mi na vystupu vyleze toto:

0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1

0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1

15 2 8 5 3
3 3 7
9 1 16 13

5

A podle toho ze ma byt prvni radek a pak sloupec, tak vlastne dava smysl, ze pri te inicializaci vlastne zadavam cely ten prvni radek, je to tak?

 
Odpovědět
21.1.2021 14:16
Avatar
Nikola Jurková:16.2.2021 13:23

V příkladu ke stažení je chyba:

kinosaly = []

for i in range(5):
    kinosal = []
    for j in range(5):
        temp = []
        for k in range(5):
            temp.append(0)
        kinosal.append(temp)
    kinosaly.append(temp)

V posledním řádku by mělo být

kinosaly.append(kinosal)

Tak aby to někoho nezmátlo...

 
Odpovědět
16.2.2021 13:23
Avatar
Kamil Stanek
Člen
Avatar
Kamil Stanek:16.5.2021 12:25

V textu se objevuje, jedna nelogicnost ukazky pouziti, ktera muze leckoho potrapit hlavne u 3D poli kdyz se to uci.
Jde o cast s ukazkou pristupu k 3D poli.
"Kód výše vytvoří 3D pole jako na obrázku. Přistupovat k němu budeme opět přes indexy (hranaté závorky) jako předtím, jen již musíme zadat 3 souřadnice."
Jenze v predchozim prikladu je vytvorene pole mensiho rozmeru, nez se v dalsim radku snazi autor ukazat pristup k tomuto poli.
Vytvorene pole kinosaly ma rozmer
Z = 3 prvky (tedy rozsah 0-2)
Y = 5 prvku (tedy rozsah 0-4)
X = 5 prvku (tedy rozsah 0-4)
pak je nelogicke adresovat v ukazce Z na indexu 3 !

kinosaly[3][2][1] = 1   #spatny Z index ten nemuze byt 3, ale jen 0-2, ostatni jsou v poradku

doporucuji zmenu na:

kinosaly[2][3][1] = 1
print(kinosaly)
 
Odpovědět
16.5.2021 12:25
Avatar
Milan
Člen
Avatar
Milan:29.6.2022 22:02

Ještě k té lenosti programátorů ... naplnil jsem pole daty už při vytváření, pomocí podmínky

if (j <= i) and (i + j > 3):

Zdálo se mi to tak více správné. If pro naplnění většího čtvercového kinosál např. 7x7 je potom
if (j <= i) and (i + j > 5):

Tohle je ale lekce o polích a né o podmínkách, takže v pořádku :D

 
Odpovědět
29.6.2022 22:02
Avatar
Václav Vinkler:9.8.2022 16:10

přidal bych navíc nějakou úlohu na procvičení, děkuji

 
Odpovědět
9.8.2022 16:10
Avatar
Jaroslav Toninger:15.8.2022 12:33

Jako docela se v tom orientuju prostorově, dokážu si představit, jako v seznamu je něco jako pod seznam (nebo vnitřní seznam) a případně v 3D poli je to ještě o skupinu níže. V indexování a orientování pro úpravu hodnot z 0 na 1, také bez problému, je to něco jako šachy no do jisté míry. Implementace do obtížnějších programů, to bych aktuálně nedal, ale jinak mi to přijde daleko lépe vysvětlené než např. definice funkcí.

Odpovědět
15.8.2022 12:33
Bez extrému by nebyl pokrok v přírodě.
Avatar
Martin Truhlář:20.8.2022 15:33

Opět jsem si vypsal jednotlivé řádky postupně, abych viděl jak se jedničky přidávaly :)

#!/usr/bin/env python3


kinosal = []

for i in range(5):
    temp = []
    for j in range(5):
        temp.append(0)
    kinosal.append(temp)

kinosal[2][2] = 1  #[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] //zde jednička ručně 2. pole 2 cislo (pocita se od nuly!!!)
for i in range(1, 4):
    kinosal[3][i] = 1 #[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0]] // zde jednicky byly vyplneny pres for (3. pole a jednickami se vyplni 1 az 4)
for j in range(0,5):
    kinosal[4][j] = 1 #[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 1, 1, 1, 0], [1, 1, 1, 1, 1]] // zde jednicky byly vyplneny pres for (4. pole a jednickami se vyplni 0 az 5)

for seznam in kinosal:
    for prvek in seznam:
        print(prvek, end="") # 0000000000001000111011111
    print(end="\n") #seřazení pod sebe
Editováno 20.8.2022 15:33
 
Odpovědět
20.8.2022 15:33
Avatar
Evzen Ptacek
Člen
Avatar
Evzen Ptacek:3.12.2022 21:01
kinosal1 = list([0, 0, 0, 0, 0] for x in range(5))

kinosal1

[[0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0]]
import numpy as np

kinosal2 = np.zeros((8,5))

kinosal2

array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])

Generovani matice nahodnych cisel

np.random.random((8,5))

array([[0.47338491, 0.47885201, 0.13005272, 0.07094365, 0.65742587],
       [0.67707475, 0.18562083, 0.01774169, 0.39174919, 0.55687578],
       [0.39059865, 0.32479834, 0.06661175, 0.69130464, 0.46398299],
       [0.41622096, 0.53562399, 0.13572455, 0.12172861, 0.3308881 ],
       [0.01826136, 0.23021701, 0.84553968, 0.96619318, 0.42733868],
       [0.04825381, 0.24767311, 0.83932112, 0.42171277, 0.82015599],
       [0.7604916 , 0.88322936, 0.35028098, 0.22093633, 0.63659753],
       [0.03070536, 0.09934434, 0.64546237, 0.04802075, 0.59583348]])
 
Odpovědět
3.12.2022 21:01
Avatar
Michal Plačko:5.1.2023 21:30

Niekedypri cviceniach konkretne aj tento , az velmi zlozite priklady

 
Odpovědět
5.1.2023 21:30
Avatar
Adam Staroštík:6.3.2023 12:15

Tahle lekce je opět vysvětlena velice stroze. Více příkladů by se hodilo

 
Odpovědět
6.3.2023 12:15
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 41.