Table of Contents

Cvičení 6, Pole, matice

Opakování

Projdeme si inicializaci a kopírování 1D a více-D polí. Spusťte následující kód a na konci si vytiskněte jednotlivá pole. Co pozorujeme?

# Inicializace pole
a = [0] * 5
 
# Jak správně zkopírovat pole?
b = a
c = a[:]
d = list(a)
 
a[3] = 3
b[0] = -5
c[4] = 4

Nyní spusťte následující kód a opět si na konci vypište jednotlivá pole.

# Inicializace 2D pole přímo
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
 
# Inicializace po řádcích
f = []
for i in range(3):
    f.append([i] * 3)
 
# Inicializace po řádcích ve zkráceném zápisu
g = [[i] * 3 for i in range(3)]
 
# Jak správně zkopírovat pole?
b = a
c = a[:]
d = list(b)
 
a[1][2] = -1
c[2][1] = -3

Pokud chceme opravdovou kopii vícedimenzionálního pole, tvz. deep copy, můžeme použít modul copy a funkci deepcopy. Doplňte import a kopírování do předchozí ukázky a porovnejte výsledky.

import copy
 
d = copy.deepcopy(b)

Úkol 1 Life

a = [[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, 1, 1, 1, 0],
     [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
     [0, 0, 1, 0, 1, 0, 0, 0, 0, 0],
     [0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
     [0, 0, 0, 1, 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, 0, 0, 0, 0, 0, 0]
   ]

[[0]*len(a[0]) for i in a]

import time
time.sleep(0.5)

''.join('X' if i!=0 else ' ' for i in x))

Úkol 2 Prohození řádků matice

Úkol 3 Gaussova eliminační metoda

Úkol 3a Nalezení největšího prvku ve sloupci

Úkol 3b Prohození řádku

Úkol 3c Úprava řádku

Úkol 3d Gausova eliminace

Příklad

m=[[12,-7,3, 26],
   [4 ,5,-6, -5],
   [-7 ,8,9, 21]]

mm = [list(map(Fraction, v)) for v in m]

result = [list(map(float, v)) for v in mm]

domácí práce

Lehká varianta

Příklady

Vstup:

. . . x x . . .
x . . x . o . .
. . x o o x . o
. o o o o o x .
. o o . . x x .
Výstup: o

Vstup:

. . o o x . . .
. . x x x . x .
. . . o x x . .
x x o . x o . .
. o o x o . . .
. . x o . . . .
Výstup: x

Vstup:

. o x x . . . .
o o x x . . . .
. o x o x . . .
. . x . . x . .
. . . x x x . .
Výstup: None

Těžká varianta

python3 rectangle.py matice.txt

Příklad

Matice matice.txt:

 1 -9 -2   8   6  1
 8 -1 -11 -7   6  4
10 12 -1  -9 -12 14
 8 10 -3  -5  17  8
 6  4 10 -13 -16 19

Výstup:

1 2
3 3

Testovací matice matice.tgz