Commit d9dbbbb0 authored by cermak's avatar cermak
Browse files

lesson 6

parent 91d5bac3
Pipeline #18100 passed with stage
in 3 minutes and 27 seconds
...@@ -88,5 +88,7 @@ ...@@ -88,5 +88,7 @@
"emmet.excludeLanguages": [ "emmet.excludeLanguages": [
"markdown" "markdown"
] ],
"python.pythonPath": "C:\\Anaconda3\\envs\\py39\\python.exe",
"python.dataScience.jupyterServerURI": "local"
} }
\ No newline at end of file
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
% ---------------------------------------------------------------------- % ----------------------------------------------------------------------
\begin{frame}{Řez seznamem} \begin{frame}{List Slicing / Řezy seznamem}
\py{% \py{%
x = [11, 22, 33, 44, 55, 66, 77] \\ x = [11, 22, 33, 44, 55, 66, 77] \\
...@@ -37,7 +37,7 @@ x[5:] ...@@ -37,7 +37,7 @@ x[5:]
} }
\py{% \py{%
x[:] x[:] \cmt{(x.copy() je univerzálnější)}
}{% }{%
[11, 22, 33, 44, 55, 66, 77] \cmt{(kopie seznamu)} [11, 22, 33, 44, 55, 66, 77] \cmt{(kopie seznamu)}
} }
...@@ -93,51 +93,84 @@ x ...@@ -93,51 +93,84 @@ x
} }
\py{% \py{%
help(x) \cmt{(vypíše dostupné operace)} x.extend([16, 20]) \cmt{(přidá iterable)} \\
x
}{% }{%
[2, 42, 3, 4, 16, 20]
} }
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Generátorové notace / List comprehension}
Je to rychlé a přehledné
\py{% \py{%
help([]) \cmt{(totéž)} a = [x*x for x in range(10)] \\
a
}{% }{%
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
} }
\end{frame} \py{%
a = [x for x in range(50) if x \% 7 == 0] \\
% ---------------------------------------------------------------------- a
}{%
[0, 7, 14, 21, 28, 35, 42, 49]
}
\begin{frame}{Použití řezů} Lze i pro sety (unikátní list):
\py{% \py{%
x = [11, 22, 33, 44, 55, 66, 77] \\ a = \{x for x in range(50) if x \% 7 == 0\} \\
x[:3] + x[4:] a
}{% }{%
[11, 22, 33, 55, 66, 77] \cmt{(vypuštění prvku)} \{0, 7, 14, 21, 28, 35, 42, 49\}
} }
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Fronta s dvěma konci}
Podobné jako list, ale umí rychle přidávat a odebírat ze začátku.
\pycode{deque.py}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Časování v notebooku}
\pycode{nadruhou.py}
\py{% \py{%
x[:3] + [0] + x[3:] \cmt{(vložení prvku)} \%timeit nadruhou(10)
}{% }{%
[11, 22, 33, 0, 44, 55, 66, 77] 132 ns ± 4.96 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
} }
\py{% \py{%
x[2:4] = [1, 2, 3, 4] \\ \%timeit -r1 -n10 nadruhou(10)
x
}{% }{%
[11, 22, 1, 2, 3, 4, 55, 66, 77] \cmt{(přiřazení do řezu)} 290 ns ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)
} }
\py{% \py{%
y=[1,2,3] \\ \%\%timeit -r1 -n10 \cmt{(celá buňka, 2x \%)} \\
y[0:0] = [-1] \\ nadruhou(10) \\
y nadruhou(10)
}{% }{%
[-1, 1, 2, 3] \cmt{(jiný způsob, jak vložit prvek)} 360 ns ± 0 ns per loop (mean ± std. dev. of 1 run, 10 loops each)
} }
\end{frame} \end{frame}
% ---------------------------------------------------------------------- % ----------------------------------------------------------------------
\begin{frame}{Řetězce se chovají jako seznamy} \begin{frame}{Řetězce se chovají jako seznamy}
...@@ -219,8 +252,9 @@ e \\ ...@@ -219,8 +252,9 @@ e \\
} }
\py{% \py{%
help("") [p + q for p in '123' for q in 'ab']
}{% }{%
['1a', '1b', '2a', '2b', '3a', '3b']
} }
\end{frame} \end{frame}
...@@ -263,4 +297,60 @@ True \cmt{(pozor, nerespektuje česká pravidla)} ...@@ -263,4 +297,60 @@ True \cmt{(pozor, nerespektuje česká pravidla)}
% ---------------------------------------------------------------------- % ----------------------------------------------------------------------
\begin{frame}{Převody mezi typy dat}
\py{%
int("123")
}{%
123
}
\py{%
str(123)
}{%
"123"
}
\py{%
list("123")
}{%
['1', '2', '3']
}
\py{%
str(['1', '2', '3'])
}{%
"['1', '2', '3']"
}
\py{%
list(range(1, 10))
}{%
[1, 2, 3, 4, 5, 6, 7, 8, 9]
}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Úkoly na hodinu}
otočte řetězec (datel → letad)
\bigskip
otočte číslo v desítkové soustavě (1024 → 4201)
\bigskip
spočítejte, kolik zadaný řetězec obsahuje různých slov
\bigskip
vyhodnoťte výraz se sčítáním (12+34+1 → 47)
\end{frame}
% ----------------------------------------------------------------------
\end{document} \end{document}
from collections import deque
N = 99999
a = [x for x in range(N)]
b = deque(a)
# tohle je rychlé (čas 1)
a.pop()
b.pop()
a.pop(0) # tohle ale trvá N času
b.popleft() # deque je rychlý
# obdobně s vkládáním
b.appendleft(-1)
def nadruhou(n):
return n*n
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment