Kolekce Stanislav Geidl Lekce 4 Kolekce Kolekce - seznamy, N-tice a slovníky. C2184 Úvod do programování v Pythonu podzim 2016 C21B4 Úvod do programová Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita 4.1 Kolekce seznam (list) N-tice (tuple) slovník (dictonary, diet) Kolekce Stanislav Geidl C21B4 Úvod do programová Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.2 List (seznam) Kolekce Stanislav Geidl 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í C21B4 Úvod do programová Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.3 Práce se seznamy I. • vytvoření seznámí = [1, 1, 2, 3, 5, 8, 13] seznam2 = list(seznámí) seznam3 = seznámí[:] seznam4 = seznámí # nejedna se o novy list, pouze odkaz na starý!!! seznam5 = range(2,20,2) # [2, 4, 6, 8, 10, 12, 14, 16, 18] • přidáváme prvky seznámí.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]] Kolekce Stanislav Geidl 1:)i 1» C21B4 Úvod do programová Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 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 záporné čí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, 2T 4, 5, 6] x[l:4] x[2:] x[:2] x[2:2] x[-2:] x[:-2] Kolekce Stanislav Geidl C21B4 Úvod do programová Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.5 Práce se seznamy III. seznámí = ['a', 'b', ' c', ' ď , ' e', ' f' ] • mazání seznámí.remove('cr ) # ['a', 'b', 'ď, 'e', 'f'] last = seznámí.pop() # last = 'f; ['a', 'b', ' ď , 'e'] first = seznámí.pop(0) # last = 'a'; ['b', ' ď , 'e', ' f' ] • přehození směru seznámí.reverse() # ['f, 'e', ' ď , 'b'] • vyhledávání seznámí.index(' br ) #3 = 4. prvek seznámí.count('ď) # 1 = jedenkrát • seřazení seznam = [1, 4, 3, 6, 2, 5] seznam.sort() # [1, 2, 3, 4, 5, 6] seznam.sort(reverse=True) # [6, 5, .. Kolekce Stanislav Geidl 1:)i 1» C21B4 Úvod do programová Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.6 Práce se seznamy IV. počítání seznam! = [1, 1 2 3 r ^ r f len (seznámí) # 7 sum(seznámí) # 33 min (seznámí) # 1 max(seznámí) # 13 procházení for item in [1, 2, 3] : print(item) for item in range(1,4) print(item) 5, 8, 13] Kolekce Stanislav Geidl C21B4 Úvod do programová Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.7 Tuple (N-tice) Kolekce Stanislav Geidl vytváříme pomocí jednoduchých závorek () můžeme s nimi pracovat podobně jako se seznamy, jenom je nemůž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 tupie ([1,2]) C21B4 Úvod do programová Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.8 Dictionary (slovník) • 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 unikátní, žádný slovník nemůže obsahovat dva stejné klíče Kolekce Stanislav Geidl i" C21B4 Úvod do programování v Pythonu Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.9 Práce se slovníky • vytvoření diet = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} • čtení/získání print(diet['Name']) # Zara • přidání nebo úprava hodnot diet['Age'] = 8 # úprava stávající hodnoty diet ['School'] = "DPS School"# přidáni nové • smazání hodnot del diet['Name'] diet.clear () # smaže všechny položky del diet # smaže celý slovnik • procházení hodnot for key in diet: print(key) print(diet[key]) Kolekce Stanislav Geidl C21B4 Úvod do programování v Pythonu Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.10 Vícerozměrné kolekce Kolekce Stanislav Geidl 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)] C2184 Úvod do programování Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.11 Příklad Mějme tento citát: citát = """Hra je jeden z nejefektivnejsich způsobu, jak zjednodušit život. Presne to jsme dělali jako deti, ale v dospelosti jsme si hrat zapomněli. """ O Převeďte citát na seznam slov (zalomení řádků,'.' a ',' jako součást slov nepovažujte) © 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? Kolekce Stanislav Geidl i" C21B4 Úvod do programování v Pythonu Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.12 Příklad - řešení Kolekce Stanislav Geidl citát = """Hra je jeden z nejefektivnejsich způsobu, jak zjednodušit život. Presne to jsme dělali jako deti, ale v dospelosti jsme si h rat zapomněli. """ li n n -j n n n citat2 = citát . replace ('.','') citat2 = citat2 . replace (',','') slova = c i t at 2 . split () """ nebo slova = citát. replace ('.',''). replace ('.',''). spi it () """ a n n 2 """ """ a - kolik je slov? """ počet = len(slova) print (počet) """ b — kolik je minimálni/maximálni počet znaku ve slovech? """ pocty = [] for slovo in slova: pocty . append (len (slovo )) minimum = min(pocty) maximum = max( pocty) print ("Min i^fjVnMax:,_,{}". format (minimum .maximum)) """ c - jake slovo je nejde Is i """ i = pocty . index (maximum) print (slova [ i ]) """ d - jaka je průměrná délka slov """ print (sum(pocty )/ počet) C2184 Úvod do programování Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.13 Příklad - řešení (pokračování) """ e - jaky je median délky slov """ pocty2 = pocty [: ] pocty2 . sort () i = int(pocet/2) if počet \% 2 == 0: print ((pocty2[i -1]+pocty2[ i ])/2) """ nebo print (sum(pocty2[i-1:i + 1 ])/2) """ else: print ( pocty2 [ i ]) del pocty2 Kolekce Stanislav Geidl C2184 Úvod do programování v Pythonu Kolekce List (seznam) Tuple (N-tice) Dictionary (slovník) Vícerozměrné kolekce Příklady 4.14