diff --git a/08-slovniky/08-slovniky.tex b/08-slovniky/08-slovniky.tex new file mode 100644 index 0000000000000000000000000000000000000000..20bcc2d6a52f9db52b6bf0af95e2567155283ae9 --- /dev/null +++ b/08-slovniky/08-slovniky.tex @@ -0,0 +1,232 @@ +\documentclass{beamer} +\usepackage[utf8]{inputenc} +\usepackage[czech]{babel} +\usepackage{palatino} +\usepackage{verbatim} +\usetheme{Warsaw} +\title{Programování 1: Množiny a slovníky} +\author[Martin Mareš]{Martin Mareš\\\texttt{mj@ucw.cz}} +\institute{Katedra Aplikované Matematiky\\MFF UK Praha} +\date{2019} +\begin{document} +\setbeamertemplate{navigation symbols}{} +\setbeamertemplate{footline}{} +\setbeamerfont{title page}{family=\rmfamily} +\shorthandoff{"} + +\begin{frame} +\titlepage +\end{frame} + +\input ../slidemac.tex + +\def\{{\char123\relax} +\def\}{\char125\relax} + +% ---------------------------------------------------------------------- + +\begin{frame}{Množiny} + +\py{% +zvířata = \{"pes", "pes", "kočka", "výr"\}\\ +zvířata +}{% +\{'výr', 'pes', 'kočka'\} +} + +\py{% +"kočka" in zvířata +}{% +True +} + +\py{% +"hroznýš" in zvířata +}{% +False +} + +\py{% +set(["a", "b", "c"]) +}{% +\{'c', 'b', 'a'\} +} + +\py{% +set("abrakadabra") +}{% +\{'r', 'a', 'k', 'b', 'd'\} +} + +\py{% +set() +}{% +set() \cmt{(pozor, {\tt \{\}} znamená něco jiného)} +} + +\end{frame} + +% ---------------------------------------------------------------------- + +\begin{frame}{Operace s množinami} + +\py{% +a=set("abrakadabra") \\ +b=set("popokatepetl") \\ +"".join(sorted(a)) \cmt{(umí se chovat jako seznam)} +}{% +'abdkr' +} + +\py{% +k \& b \cmt{(průnik)} +}{% +\{'k', 'a'\} +} + +\py{% +a | b \cmt{(sjednocení)} +}{% +\{'r','p','a','e','k','b','o','t','d','l'\} +} + +\py{% +a - b \cmt{(rozdíl)} +}{% +\{'r', 'd', 'b'\} +} + +\py{% +a.remove("r") \cmt{(odebere prvek)}\\ +b.add("b") \cmt{(přidá prvek)}\\ +a - b +}{% +\{'d'\} +} + +\end{frame} + +% ---------------------------------------------------------------------- + +\begin{frame}{Slovníky} + +\py{% +teploty = \{ "Praha": 17, "Dillí": 42, "Longyearbyen": -46 \}\\ +teploty["Praha"] +}{% +17 \cmt{(klíčem může být každý neměnný typ)} +} + +\py{% +teploty["Horní Dolní"] = 11 \\ +del teploty["Horní Dolní"] \cmt{(i pro pole)} \\ +"Horní Dolní" in teploty +}{% +False +} + +\py{% +teploty["Peklo"] +}{% +<chyba KeyError> +} + +\py{% +teploty.get("Peklo") +}{% +None +} + +\py{% +teploty.get("Peklo", -999) +}{% +-999 +} + +\end{frame} + +% ---------------------------------------------------------------------- + +\begin{frame}{Cyklus přes prvky slovníku} + +\py{% +for k in teploty.keys(): +\.\>print(k) +}{% +Praha \\ +Dillí \\ +Longyearbyen +} + +\py{% +for v in teploty.values(): +\.\>print(v) +}{% +17 \\ +42 \\ +-46 +} + +\py{% +for k, v in teploty.items(): +\.\>print(f"\{k\} = \{v\}") +}{% +Praha = 17 \\ +Dillí = 42 \\ +Longyearbyen = -46 +} + +\end{frame} + +% ---------------------------------------------------------------------- + +\begin{frame}{List comprehension pro množiny a slovníky} + +\py{% +\{ x**2 for x in range(5) \} +}{% +\{0, 1, 4, 9, 16\} +} + +\py{% +\{ x: x**2 for x in range(5) \} +}{% +\{0: 0, 1: 1, 2: 4, 3: 9, 4: 16\} +} + +\end{frame} + +% ---------------------------------------------------------------------- + +\begin{frame}{Slovník s~defaulty} + +\py{% +from collections import defaultdict \\ +počet = defaultdict(int) \\ +počet['abc'] +}{% +0 +} + +\py{% +for w in "quick brown fox quick".split(): +\.\>počet[w] += 1 \\ +list(počet.items()) +}{% +[('abc', 0), ('quick', 2), ('brown', 1), ('fox', 1)] +} + +\py{% +podle\_délek = defaultdict(list) \\ +for w in "quick brown fox".split(): +\.\>podle\_délek[len(w)].append(w) \\ +list(podle\_délek.items()) +}{% +[(5, ['quick', 'brown']), (3, ['fox'])] +} + +\end{frame} + +% ---------------------------------------------------------------------- + +\end{document} diff --git a/08-slovniky/Makefile b/08-slovniky/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..56db36bdaf36d88279f004c322be4b5766652934 --- /dev/null +++ b/08-slovniky/Makefile @@ -0,0 +1,3 @@ +SLIDES=08-slovniky.pdf + +include ../Makerules