Lekce 4. Kolekce. Kolekce - seznamy, N-tice a slovníky. C2184 Úvod do programování v Pythonu podzim 2016

Podobné dokumenty
Da D to t v o é v ty t py IB111: Datové typy

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Vestavěné nástroje Pythonu

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

Programování v Pythonu

Programování v Pythonu

Lekce 2. Řetězce a práce s nimi. Vstup a výstup. C2184 Úvod do programování v Pythonu podzim 2016

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Databáze I. 5. přednáška. Helena Palovská

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

Kolekce, cyklus foreach

Programování v Pythonu

Dynamické datové struktury I.

Programování v C++ 2, 8. cvičení

Dotazy tvorba nových polí (vypočítané pole)

Rozptylovací tabulky

1. Pro přihlášení k odběru novinek klikněte na tlačítko Registrace nového uživatele.

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

Ukládání a vyhledávání XML dat

Základní datové struktury

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Spojový seznam. Jan Kybic.

IB111 Úvod do programování skrze Python

Pole a kolekce. v C#, Javě a C++

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech

Reorganizace odkazů na dokumenty v rámci Advokátní agendy a. Seznam spisů na kartě klienta v Advokátní agendě

Programování v jazyce JavaScript

Základy programování v jazyce Python pro střední školy

Dynamické datové struktury III.

Administrace webu Postup při práci

Algoritmizace prostorových úloh

Nápověda aplikace Patron-Pro

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Stromy. Jan Hnilica Počítačové modelování 14

þÿ O k t á v o d i g i t á l n í k n i h o v n a F F

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Access. Tabulky. Vytvoření tabulky

IB111 Úvod do programování skrze Python Přednáška 7

Hydroprojekt CZ a.s. WINPLAN systém programů pro projektování vodohospodářských liniových staveb. HYDRONet 3. Modul EDITOR STYLU

Dynamické datové struktury IV.

Pointery II. Jan Hnilica Počítačové modelování 17

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Domácí hosté Program pro řízení kuželkových soutěží

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

IB111 Úvod do programování skrze Python Přednáška 6

Architektury databázových

LINUX SOUBORY. Zadejme příkaz ls l! V této lekci se odrazíme od dlouhého výpisu příkazu ls a uvidíme, kam nás to zanese. SPŠ Teplice - 3.

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Operační výzkum. Teorie her. Hra v normálním tvaru. Optimální strategie. Maticové hry.

IB111 Úvod do programování skrze Python

Základy algoritmizace 2. Proměnné, datové typy

CNC Blocks Utility 3. Instalace

( ) ( )( ) ( x )( ) ( )( ) Nerovnice v součinovém tvaru II. Předpoklady: Př.

Grafové algoritmy. Programovací techniky

Administrační systém

8. Posloupnosti, vektory a matice

Třídy a struktury v C++

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Systém pro poloautomatické propojení textů se zdroji

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Personální evidence zaměstnanců

vyhledávací stromové struktury

Škola internetu pro třetí generaci

Algoritmizace prostorových úloh

ON!Track webová aplikace uživatelská příručka. Webová aplikace příručka verze 1.1

FUNKCE 3. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý. Vzdělávací oblast: Informatika a výpočetní technika

POLE. - datová struktura ze složek stejného typu, ke kterým se přistupuje pomocí indexů

Citace v odborném textu výukovém materiálu. Jitka Kominácká

Programování v C++ 2, 7. cvičení

IB111 Úvod do programování skrze Python Přednáška 7

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

Databox CONTACT 6 základní operace programu

Požadované dovednosti v ovládání textového procesoru Microsoft Word 2013 pro předměty VA1 a VT1

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý

Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

více křivek v jednom grafu hold on přidrží aktuální graf v grafickém okně, lze nakreslit více grafů do jednoho grafického okna postupně hold off

Třídění a vyhledávání Searching and sorting

Databázové systémy Cvičení 5.2

Manuál k e-learningovému vzdělávacímu modulu 1 MODUL HIGH-TECH POTRAVINY. Popularizace zdraví Po.Zdrav (CZ.1.07/3.1.00/ )

Operace s vektory a maticemi + Funkce

Co je nového pro učitele?

PG 9.5 novinky ve vývoji aplikací

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Ten objekt (veličina), který se může svobodně měnit se nazývá nezávislý.

X10 Uživatelský manuál na webové rozhraní (ver0.9)

6 Příkazy řízení toku

Microsoft Excel. Základní operace s buňkami. Formát buňky

Excel Matematické operátory. Excel předdefinované funkce

Sklady. Níže popsaný návod je určen pro uživatele s rolí Administrátor nebo Správce skladu. Přehled funkcí 2. Postup pro vytvoření nového skladu 2

Studijní informační systém. Tvorba rozvrhu ve Studijním informačním systému (SIS) I. Obecné principy

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

16. Goniometrické rovnice

ZŠ ÚnO, Bratří Čapků 1332

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Transkript:

Lekce 4 - seznamy, N-tice a slovníky. C2184 Úvod do programování v Pythonu podzim 2016 Národní centrum pro výzkum biomolekul Masarykova univerzita 4.1

seznam (list) N-tice (tuple) slovník (dictonary, dict) 4.2

patří do kolecí, podobně jako N-tice a slovník vytváříme pomocí hranatých závorek [] ["a", "b", "c", "d"] každý prvek má svůj automatický index, který odpovídá pořadí 4.3

Práce se seznamy I. vytvoření seznam1 = [1, 1, 2, 3, 5, 8, 13] seznam2 = list(seznam1) seznam3 = seznam1[:] seznam4 = seznam1 # nejedna se o novy list, pouze odkaz na stary!!! seznam5 = range(2,20,2) # [2, 4, 6, 8, 10, 12, 14, 16, 18] přidáváme prvky seznam1.append(21) # [1, 1, 2, 3, 5, 8, 13, 21] seznam2.insert(2, 90) # [1, 1, 90, 2, 3, 5, 8, 13] seznam3.extend([21, 34]) # [1, 1, 2, 3, 5, 8, 13, 21, 34] seznam3.append([21, 34]) # [1, 1, 2, 3, 5, 8, 13, [21, 34]] 4.4

Práce se seznamy II. - přístup k hodnotám můžeme přistupovat k jakémukoliv prvku pomocí jeho indexu seznam[x], kde nula a kladné číslo n určuje index zleva a zaporné číslo určuje index zprava [1, 2, 3, 4, 5][0] # 1 [1, 2, 3, 4, 5][1] # 2 [1, 2, 3, 4, 5][-1] # 5 přes dvojtečku můžeme nadefinovat rozsah seznam[x:y], kde tyto výrazy si odpovídají: [1, 2, 3, 4, 5][:] # [1, 2, 3, 4, 5] [1, 2, 3, 4, 5][2:] # [3, 4, 5] [1, 2, 3, 4, 5][:2] # [1, 2] pozor na číslovaní! v Pythonu začínáme od nuly! [1, 2, 3, 4, 5] 0. 1. 2. 3. 4. co bude výsledkem? seznam = [1, 2, 4, 5, 6] x[1:4] x[2:] x[2:2] x[-2:] x[:2] x[:-2] 4.5

Práce se seznamy III. seznam1 = [ a, b, c, d, e, f ] mazání seznam1.remove( c ) # [ a, b, d, e, f ] last = seznam1.pop() # last = f ; [ a, b, d, e ] first = seznam1.pop(0) # last = a ; [ b, d, e, f ] přehození směru seznam1.reverse() # [ f, e, d, b ] vyhledávání seznam1.index( b ) # 3 = 4. prvek seznam1.count( d ) # 1 = jedenkrat seřazení seznam = [1, 4, 3, 6, 2, 5] seznam.sort() # [1, 2, 3, 4, 5, 6] seznam.sort(reverse=true) # [6, 5,... 4.6

Práce se seznamy IV. počítání seznam1 = [1, 1, 2, 3, 5, 8, 13] len(seznam1) # 7 sum(seznam1) # 33 min(seznam1) # 1 max(seznam1) # 13 procházení for item in [1, 2, 3]: print(item) for item in range(1,4): print(item) 4.7

vytváříme pomocí jednoduchých závorek () můžeme s nimi pracovat podobně jako se seznamy, jenom je nemužeme měnit, tzn. že funkce append a další nejsou dostupné můžeme jednoduše převádět na list pomocí list((1,2)) a podobně zpět tuple([1,2]) 4.8

vytváříme pomocí složených závorek {} {1: 3, 2: 4} prvek ve slovníku se skládá z klíče a jeho hodnoty, 1 a 2 jsou klíče, jejich hodnoty jsou 3, resp. 4 nefungují zde indexy, na hodnoty se dotazujeme pomocí klíče každý klíč je unikatní, žádný slovník nemůže obsahovat dva stejné klíče 4.9

Práce se slovníky vytvoření dict = { Name : Zara, Age : 7, Class : First } čtení/získání print(dict[ Name ]) # Zara přidání nebo úprava hodnot dict[ Age ] = 8 # úprava stávající hodnoty dict[ School ] = "DPS School"# přidání nové smazání hodnot del dict[ Name ] dict.clear() # smaže všechny položky del dict # smaže celý slovník procházení hodnot for key in dict: print(key) print(dict[key]) 4.10

kolekce můžeme kombinovat a vytvářet list listů,... [[1, 2], [2, 3], [4, 5]] můžeme kombinovat i navzájem a vytvářet list N-tic,... [(1, 2), (2, 3), (4, 5)] 4.11

Příklad Mějme tento citát: c i t a t = " " " Hra j e jeden z n e j e f e k t i v n e j s i c h zpusobu, j a k z j e d n o d u s i t z i v o t. Presne to jsme d e l a l i jako d e t i, ale v dospelosti jsme s i hrat zapomneli. " " " 1 Převed te citát na seznam slov (zalomení řádků,. a, jako součást slov nepovažujte) 2 Počítejte a hledejte: a) Kolik citát obsahuje slov? b) Kolik je minimální a maximální počet znaků ve slovech? c) Jaké je nejdelší slovo? d) Jaká je průměrná délka slova? e) Jaký je medián délky slova? 4.12

Příklad - řešení c i t a t = " " " Hra j e jeden z n e j e f e k t i v n e j s i c h zpusobu, j a k z j e d n o d u s i t z i v o t. Presne to jsme d e l a l i jako d e t i, ale v dospelosti jsme s i hrat zapomneli. " " " " " " 1 " " " c i t a t 2 = c i t a t. replace (., ) c i t a t 2 = c i t a t 2. replace (,, ) slova = c i t a t 2. s p l i t ( ) " " " nebo slova = c i t a t. replace (., ). replace (., ). s p l i t ( ) " " " " " " 2 " " " " " " a k o l i k j e slov? " " " pocet = len ( slova ) p r i n t ( pocet ) " " " b k o l i k j e minimalni / maximalni pocet znaku ve slovech? " " " pocty = [ ] for slovo in slova : pocty. append ( len ( slovo ) ) minimum = min ( pocty ) maximum = max( pocty ) p r i n t ( " Min : { } \ nmax : { } ". format ( minimum, maximum ) ) " " " c jake slovo j e n e j d e l s i " " " i = pocty. index (maximum) p r i n t ( slova [ i ] ) " " " d jaka je prumerna delka slov " " " p r i n t (sum( pocty ) / pocet ) 4.13

Příklad - řešení (pokračování) " " " e jaky j e median delky slov " " " pocty2 = pocty [ : ] pocty2. s o r t ( ) i = i n t ( pocet / 2 ) i f pocet \% 2 == 0: p r i n t ( ( pocty2 [ i 1]+pocty2 [ i ] ) / 2 ) " " " nebo p r i n t (sum( pocty2 [ i 1: i + 1 ] ) / 2 ) " " " else : p r i n t ( pocty2 [ i ] ) del pocty2 4.14