Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilBohumír Bezucha
1
Datové typy
2
Hlavní datové typy 1)Boolean 2)Čísla 3)Řetězce 4)Seznamy 5)N-tice 6)Slovníky 7)Množiny 8)Další
3
Ad 1) Typ boolean Nabývá buď hodnoty True nebo False. Typ může vzniknout také vyhodnocením výrazu: >>> cislo = 123 >>> cislo < 2 False >>> cislo = 123 >>> cislo > 2 True Všimněme si, že můžeme před a za znaménko vkládat mezery (je to vhodné z důvodu větší přehlednosti zápisu). Pokud mezeru nevložíme, tak se bude kód chovat naprosto stejně.
4
Ad 1) Typ boolean Hodnoty True a False lze v Pythonu sčítat, odčítat, násobit či dělit: >>> True + True 2 >>> False - True >>> False / True 0.0
5
Ad 2) Čísla V pythonu lze využívat celá (int), reálná (float) či komplexní čísla (complex). Pro určení typu můžeme využít funkci type: >>> x = 1 + 3j >>> type(x) >>> y = 3.12364 >>> type(y) >>> z = 1 >>> type(z) >>> f = 1.0 >>> type(f)
6
Ad 2) Čísla – převod typů Můžeme také převádět čísla celá na reálná a naopak: >>> float(155) 155.0 >>> int(3.1444) 3 >>> int(3.6) 3 >>> int(-0.1) 0 int číslo nezaokrouhluje, nýbrž pouze „osekává“
7
Ad 2) Čísla – operace s čísly Je zde samozřejmě možnost sčítání (+), odčítání (-), násobení (*), dělení (/), umocňování (**), určení zbytku po dělení (%) nebo celočíselné dělení(//): >>> 5.6 + 7 12.6 >>> 7 - 5.6 1.4000000000000004 >>> 9 * (-7) -63 >>> 8 / 7 1.1428571428571428 >>> 7 ** 2 49 >>> 7 % 3 1 >>> 7 // 3 2
8
Ad 2) Čísla – operace s čísly Další důležitou funkcí je zaokrouhlování – funkce round(číslo, počet desetinných míst): >>> round(5.2369) 5 >>> round(5.5369) 6 >>> round(5.5369,3) 5.537
9
Ad 2) Čísla – vytváření posloupností Potřebujeme-li rychle vytvořit posloupnost čísel, tak můžeme využít funkci range. range(x) vrací seznam čísel od 0 do x range(x, y) vrací seznam čísel od x do y. range(x, y, z) vrací seznam čísel od x do y v posloupnosti dané argumentem z.
10
Ad 2) Čísla – operace se zlomky V Pythonu lze počítat se zlomky po naimportování modulu fractions. Dochází k automatické úpravě na základní tvar: >>> import fractions >>> fractions.Fraction(10,20) Fraction(1, 2)
11
Ad 2) Čísla – operace se zlomky Se zlomky lze provádět klasické operace: >>> import fractions >>> fractions.Fraction(10,20) * fractions.Fraction(3,5) Fraction(3, 10) >>> fractions.Fraction(10,20) - fractions.Fraction(3,5) Fraction(-1, 10) >>> fractions.Fraction(10,20) + fractions.Fraction(3,5) Fraction(11, 10) >>> fractions.Fraction(10,20) / fractions.Fraction(3,5) Fraction(5, 6)
12
Ad 2) Čísla – modul math V modulu math najdeme mnoho známých funkcí (sin(), cos(), sum(), log(), log10(), sqrt()…). Můžeme také využít předdefinových čísel – pi (Ludolfovo číslo), exp() (Eulerovo číslo) >>> import math >>> math.pi 3.141592653589793 >>> math.exp(1) 2.718281828459045 >>> math.asin(math.pi/8) 0.40356460692486534
13
Ad 2) Čísla – modul numpy Modul numpy slouží pro práci s numerickými daty konkrétně s jedno až n - rozměrnými maticemi Před použitím tohoto modulu je nutné ji naimportovat: >>> import numpy Můžeme též využít zápisu: >>> import numpy as np Výhodou je to, že již nemusíme při práci s tímto modulem neustále vypisovat celý její název, ale stačí nám pouze zkratka np
14
Ad 2) Čísla – modul numpy Můžeme jednoduše vytvářet jak matice, tak vektory: >>> M = numpy.array([[0, -1, 3], [3, 4, 0]]) >>> print(M) [[ 0 -1 3] [ 3 4 0]] >>> v = numpy.array([[0, -1, 3]]) >>> print(v) [[ 0 -1 3]] Všimněme si, že každý řádek se píše zvlášť do hranaté závorky a odděluje se čárkou
15
Ad 2) Čísla – modul numpy Můžeme zjistit počet prvků (size), počet dimenzí (ndim) či rozměr (shape): >>> M = numpy.array([[0, -1, 3], [3, 4, 0]]) >>> M.size 6 >>> M.ndim 2 >>> M.shape (2, 3)
16
Ad 2) Čísla – modul numpy Často potřebujeme například vytvářet nulové matice: >>> nulova = zeros((2,2)) >>> print(nulova) [[ 0. 0.] [ 0. 0.]] Můžeme také místo polí array vytvářet matrix, kde jsou všechny operace prováděny maticově. Dále modul podporuje také například statistické zpracování dat. Celou řadu dalších funkcí můžeme nalézt v Helpu.
17
Ad 2) Čísla – modul numpy Numpy vypadá hodně podobně jako seznamy, o který bude řeč za malou chvíli. Mají ovšem velkou výhodu v tom, že nejsou tolik obecné a podporují matematické funkce jako maticové násobení. Data z Numpy se velice efektivně ukládají v paměti.
18
Ad 2) Čísla – další modul Existuje celá řada modulů, které lze importovat do Pythonu. Uveďme ještě například modul scipy, který umožňuje například analyzovat signály či provádět numerické řešení diferenciálních rovnic i integrálů (viz prezentace – numerika) atd.
19
Ad 3) Řetězce Řetězce mají zkratku str. Řetězce zapisujeme mezi znaky apostrof (') nebo uvozovky ("). V pythonu jsou řetězce reprezentovány ve znakové sadě Unicode. Do řetězce můžeme psát libovolná slova s kombinací čísel a podobně: >>> 'Ahoj' 'Ahoj' >>> "Kolik je hodin?" 'Kolik je hodin?' >>> "Je 5 odpoledne" ' Je 5 odpoledne '
20
Ad 3) Řetězce – escape sekvence Lze vytvářet prázdné znaky, aniž by se cokoli vytisklo. Mějme základní řetězec, se kterým budeme dále pracovat: >>> print("jednicka\dvojka") jednicka\dvojka Pomocí příkazu \t přidáme mezi znaky tabulátor: >>> print("jednicka\tdvojka") jednickadvojka
21
Ad 3) Řetězce – escape sekvence Pomocí příkazu \n přidáme řádek: >>> print("jednicka\ndvojka") jednicka Dvojka Pomocí příkazu \a uděláme zvukový efekt – pípnutí. Hodí se v dlouhých programech a díky signálu budeme vědět, kde se výpočet právě nachází.
22
Ad 3) Řetězce – escape sekvence Další escape sekvence jsou například: \'apostrof \"uvozovky \\zpětné lomítko \$dolar \rpřechod na začátek řádku
23
Ad 3) Řetězce Přidáním uvozovek můžeme vypisovat řetězec na více řádků (čili použijeme tři uvozovky): >>> print('''jednicka... dvojka''') jednicka dvojka
24
Ad 3) Řetězce Můžeme také vkládat nové řetězce do řetězce, a to za použití složených závorek v místě vložení. Novými řetězci mohou být jak čísla (různých formátů), tak texty: >>> print('jednicka {} dvojka'.format('nasleduje')) jednicka nasleduje dvojka nebo: >>> print('jednicka {x} dvojka {y}'.format(x='nasleduje', y=3)) jednicka nasleduje dvojka 3
25
Ad 3) Řetězce Lze také předdefinovat počet desetinných míst vloženého čísla (%.1f), matematický zápis čísla (%.1e) či vložení stringu (%s): Novými řetězci mohou být jak čísla (různých formátů), tak texty: >>> print('jednicka %.1f dvojka %.3e %s'%(1.32653, 36.1545, 'pokus')) jednicka 1.3 dvojka 3.615e+01 pokus Takto zapsaný řetězec je ve starším formátu, který se dnes nahrazuje zápisy pomocí složených závorek: >>> print('jednicka {:.1f} dvojka {:.3e} {:s}'.format(1.32653, 36.1545, 'pokus')) jednicka 1.3 dvojka 3.615e+01 pokus
26
Ad 4) Seznamy Seznamy [list] jsou nejpoužívanější datové typy v Pythonu. Vytvořit seznam lze pomocí hranatých závorek a jednotlivé prvky jsou odděleny čárkou. Seznam je uspořádaná kolekce položek. V seznamu lze kombinovat čísla i řetězce: nakup = [5, 'rohlíků', 1.5, 'kilo jablek', 6, 'lahví moštu'] Nadefinovali jsme seznam se jménem nakup a šesti položkami.
27
Ad 4) Seznamy Nadefinované seznamy jsou vlastně pole s indexováním od nuly (zleva): >>> nakup = [5, 'rohlíků', 1.5, 'kilo jablek', 6, 'lahví moštu'] >>> nakup[5] 'lahví moštu' >>> nakup[0] 5
28
Ad 4) Seznamy Lze také (mnohdy výhodně u velkých polí) využít záporných indexů – jinak řečeno položka úplně vpravo má polohu -1 nakup = [5, 'rohlíků', 1.5, 'kilo jablek', 6, 'lahví moštu'] >>> nakup[-1] 'lahví moštu' >>> nakup[-5] 'rohlíků' >>> nakup[-6] 5
29
Ad 4) Seznamy – tvorba podseznamů Potřebujeme-li vypsat pouze část seznamu (vytvořit podseznam), tak nám k tomu slouží dvojtečka (:). Tato funkce vypisuje položky od prvního čísla do předposledního >>> nakup[0:4] [5, 'rohlíků', 1.5, 'kilo jablek'] >>> nakup [2:4] [1.5, 'kilo jablek'] >>> nakup[-3:-1] ['kilo jablek', 6] >>> nakup[:] [5, 'rohlíků', 1.5, 'kilo jablek', 6, 'lahví moštu']
30
Ad 4) Seznamy – modifikace seznamů Seznamy můžeme také libovolně měnit – přidávat pole nebo je odstraňovat pomocí předdefinovaných funkcí. Můžeme také do seznamu vkládat další seznam, podobně jako u řetězců. V příkladu přidáme a odebereme první položku v seznamu: >>> nakup.insert(0,'přidej na pozici 0') [‚přidej na pozici 0', 5, 'rohlíků', 1.5, 'kilo jablek', 6, 'lahví moštu'] >>> del nakup[0] [ 5, 'rohlíků', 1.5, 'kilo jablek', 6, 'lahví moštu'] Můžeme také pomocí funkce append() přidávat položky na konci seznamu: >>> nakup.append('přidej položku nakonec') [5, 'rohlíků', 1.5, 'kilo jablek', 6, 'lahví moštu', 'přidej položku nakonec']
31
Ad 4) Seznamy – kopírování seznamů Vytvoříme si seznam a: >>> a = [1, 2, 3] >>> a [1, 2, 3] Seznam a ztotožníme se seznamem b: >>> b = a Uděláme-li jakoukoli operaci se seznamem b, tak se nám stejně přepíše i seznam a (což funguje i naopak): >>> b[1]=-100 >>> b [1, -100, 3] >>> a [1, -100, 3]
32
Ad 4) Seznamy – kopírování seznamů Chceme-li se zpětnému přepisování vyhnout, pak musíme použít příkaz copy: >>> a = [1, 2, 3] >>> b = a.copy() >>> b[1]=-100 >>> b [1, -100, 3] >>> a [1, 2, 3] Existuje i složitější hloubkové kopírování, o kterém se zájemci více dozví v helpu (modul copy).
33
Ad 4) Seznamy – vyhledávání v seznamech Pomocí operátoru příslušnosti in lze jednoduše hledat příslušné prvky ve vytvořených seznamech (nebo i v řetězcích): >>> nakup=[5, 'rohlíků', 1.5, 'kilo jablek', 6, 'lahví moštu'] >>> 5 in nakup True >>> 'kilo' in nakup False
34
Ad 4) Seznamy – další funkce Funkce count() určí počet hledaných položek v daném seznamu. Funkce append() přidá jednu položku nakonec seznamu. Funkce index() najde první výskyt v seznamu. Funkce reverse() obrátí položky v seznamu. Funkce sort() setřídí seznam. Více funkcí se nám zobrazí automaticky v samotném Pythonu při zapisování. Což je jedna z výhod.
35
Ad 5) N-tice N-tice (tuple) se tvoří stejně jako seznamy, s tím rozdílem, že se zapisují do kulatých závorek: ntice = (5, 'rohlíků', 1.5, 'kilo jablek', 6, 'lahví moštu') Jsou neměnné, čili jakmile je vytvoříme, už je nikdy nezměníme. Opět se dají vytvářet podentice z entic (pomocí dvojteček).
36
Ad 5) N-tice – proč používat? Jsou rychlejší než seznamy. Učiní Váš kód bezpečnějším. V případě potřeby lze převádět seznamy na n-tice a naopak (funkce tuple() zmrazí seznam a naopak funkce list() rozpustí n-tici.
37
Ad 6) Slovníky Slovník (dictionary), je datová struktura, která se může indexovat jakýmikoliv hodnotami libovolných neměnitelných typů (takže ne seznamem, ale n-ticí ano). Slovník je uvozen složenými závorkami {} a jednotlivé položky se deklarují ve tvaru index : hodnota. K jednotlivým hodnotám se přistupuje přes indexy. Klíče a hodnoty nelze zaměňovat. Slovník není uspořádaná množina, na pořadí hodnot ve slovníku se nemůžete nikdy spolehnout. Klíče slovníku musí být neměnné objekty, takže např. seznam nemůže být klíčem, ale n-tice ano.
38
Ad 6) Slovníky - příklad Existuje celá škála možností jak vytvořit slovníky. Uvedeme si jeden z nich včetně vnořování: >>> slovnik1 = {'1': 'I', '5': 'V', '10': 'X'} >>> slovnik2 = {'den': 'noc', 'světlo': 'tma, šero', 'teplo': 'zima, chlad'} >>> slovnik3 = {'červená': 'red', 'modrá': 'blue', 'černá': 'black'} >>> slovnik = {'cisla': slovnik1, 'antonyma': slovnik2, 'barvy': slovnik3} >>> slovnik['cisla'] {'10': 'X', '5': 'V', '1': 'I'} >>> slovnik['barvy'] {'modrá': 'blue', 'červená': 'red', 'černá': 'black'}
39
Ad 7) Množiny Množiny lze upravovat pomocí nejrůznějších funkcí. Pomocí funkcí update() a add()přidáváme hodnoty do množiny. Pomocí update můžeme přidávat i seznamy a libovolné datové typy. Funkce update() vždy přidá vše jako množinu, ikdyž budeme přidávat seznam, naproti tomu funkcí add() lze přidat pouze množinu: >>> mnozina = {1, 2, 3, 4} >>> mnozina.update({0,6},[7,8]) >>> print(mnozina) {0, 1, 2, 3, 4, 6, 7, 8} >>> mnozina.add('16') >>> mnozina {0, 1, 2, 3, 4, '16', 6, 7, 8} Dále lze mazat jednotlivé prvky množin pomocí funkcí remove() či discard().
40
Ad 7) Množiny Vytvoření množin: mnozina1 = {12} >>> print(mnozina1) {12} >>> mnozina2 = {12, 3} >>> print(mnozina2) {3, 12} >>> mnozina_prazdna = {} >>> print(mnozina_prazdna) {} >>> mnozina_smisena = {121,'text' } >>> print(mnozina_smisena) {121, 'text'}
41
Ad 8) Další Existují i datové typy na úrovni balíčků. Pokud ne potřeba vytvářet vlastní datové typy, tak nám to Python samozřejmě umožňuje.
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.