
Obsah
- 1. Vynechání části kódu
- 2. Proměnné (variables)
- 3. Datové typy
- 3. 1. Nadefinování datového typu – type(x)
- 3. 2. Zjištění datového typu – print(type(x))
- 3. 3. Ověření datového typu – isinstance()
- 3. 4. Číselné datové typy
- 3. 5. Textové datové typy
- 3. 5. 1. String
- 3. 5. 1. 1. String na více řádků
- 3. 5. 1. 2. Písmeno na pozici…
- 3. 5. 1. 3. Délka textu – len
- 3. 5. 1. 4. Malá/velká písmena – lower/upper
- 3. 5. 1. 5. Přepsání části textu – replace
- 3. 5. 1. 6. Vynechání mezer před a za textem – strip
- 3. 5. 1. 7. Zjištění zdali obsahuje… – in/not in
- 3. 5. 1. 8. Napojování string na jiný string
- 3. 5. 1. 9. Escape characters
- 3. 5. 1. String
- 3. 6. Datový typ Boolean
- 3. 7. Seznam (list)
- 3. 8. Tuple
- 3. 9. Sety
- 3. 10. Slovník (dictionary)
1. Vynechání části kódu
1. 1. Vynechání větší části kódu – ”’
x = 5
'''
x = 10
x = 50
x = 500
'''
print(x)
Dojde k vynechání úseku kódu mezi prvním ”’ a druhým. Obdobně fungují i tři uvozovky (“””). Výsledek je tedy 5, přepsání proměnné bylo vynecháno.
5
1. 2. Komentáře – #
# toto je první komentář
SPAM = 1 # a toto je druhý komentář
# ... a nyní třetí!
print('# Toto není komentář.')
Komentář uložený v kódu. Za (#) hashtagem [levý alt + x] dojde k vynechání kódu na daném řádku. Pro delší text je vhodnější použít tří uvozovek.
# Toto není komentář.
2. Proměnné (variables)
Proměnné jsou ‘krabice’ na ukládání dat. Python nemá píkaz pro deklaraci proměnných, proměnná je jednodušše vytvořena v moment, kdy se za ní dosadí nějaké hodnta.
2. 1. Definování proměnné
x = 5
y = "John"
print(x)
print(y)
2. 2. Datové typy proměnných
Proměnné není třeba definovat žádný datový typ. Ten se navíc dá jednoduše změnit přepsáním původních dat.
x = 4 # x je těď typ int
x = "Sally" # x je teď typ str
print(x)
Proměnná s datovým typem string se píše buďto s uvozovkami (“) nebo apostrofem (‘).
x = "John"
# je stejné jako
x = 'John'
2. 3. Názvy proměnných
Proměnné mohou mít krátké názvy (x nebo y) ale i více popisné názvy (stari, pocet_deti, jmeno). Je tu ale pár omezení:
- proměnná musí začínat písmenem nebo podtržítkem
- proměnná nemůže začínat číslem
- proměnná může obsahovat pouze čísla, písmena a podtržítka (A-z, 0-9, a _ )
- u jména proměnných záleží na velkých písmenech
- age, Age a AGE jsou tři různé proměnné
3. Datové typy
Datový typ není nutné předem definovat, stačí jen zapsat hodnotu. Pokud ale chceme jasně definovat typ, používá se formulace dle tabulky.
3. 1. Nadefinování datového typu – type(x)
Datový typ | Příklad | Nadefinování typu |
string | x = “Hello World” | x = str(“Hello World”) |
intiger | x = 20 | x = int(20) |
float | x = 20.5 | x = float(20.5) |
bool | x = True | x = bool(5) |
3. 2. Zjištění datového typu – print(type(x))
descislo = 2.2
print(type(descislo))
Dojde k navrácení datového typu proměnné.
<class 'float'>
3. 3. Ověření datového typu – isinstance()
Jedná se o funkci, která vrací True pokud je objekt daného typu. Pokud není, vrací False.
#Použití pro jednu hodnotu
print(isinstance(5, int))
#Použití s proměnnou
t = isinstance("slovo", int)
print(t)
#Vrací TRUE, pokud je proměnná jedním z typů
k = isinstance("Hello", (float, int, str, tuple, dict))
print(k)
True
False
True
3. 4. Číselné datové typy
- Python obsahuje 2 základní číselné datové typy
- intiger – int
- x = 1
- float
- y = 2.8
- intiger – int
3. 4. 1. Intiger
Je celé číslo, kladné i záporné, bez desetinných míst, s neomezenou délkou.
x = 1
y = 3565622255488771121225845121564584321369784386000454422
z = -3255522
3. 4. 2. Float
Float je kladné nebo záporné číslo, které obsahuje jedno nebo více desetinných míst.
x = 1.10
y = 1.0
z = -35.59
3. 4. 3. Náhodná čísla – random
Python umožňuje vytvářet náhodná čísla, je k tomu ovšem potřeba nahrát vestavěný modul random. Více zde
import random
#Vypíše náhodné číslo mezi 1 až 9
print(random.randrange(1, 10))
#Vypíše náhodné číslo float mezi 0 a 1
print(random.random())
3. 5. Textové datové typy
Python obsahuje pouze datový typ string, zkráceně str.
3. 5. 1. String
String je v pythonu ohraničena uvozovkami “slovo” nebo apostrofy ‘slovo’. Oba zápisy jsou si ekvivalentní.
a = "slovo"
b = 'další slovo'
3. 5. 1. 1. String na více řádků
Pro napsání textu na více řádků lze použít ohraničení třemi uvozovkami (jako pro vynechání kódu) u proměnné.
a = """Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua."""
print(a)
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
3. 5. 1. 2. Písmeno na pozici…
Zjišťování, které písmeno je na první pozici (pozor na python číslování od 0)
a = "Hello, World!"
print(a[1])
e
Zjišťování, které písmeno je na pozici v intervalu:
a = "Hello, World!"
print(a[2:5])
b = "Hello, World!"
print(b[-5:-2])
llo
orl
3. 5. 1. 3. Délka textu – len
Pro zjištění délky textu slouží funkce len(). Počítají se všechny znaky mezi první a poslední uvozovkou, tedy i čárky, mezery a pod.
a = "Hello, World!"
print(len(a))
13
3. 5. 1. 4. Malá/velká písmena – lower/upper
Funkce přepisující text na malá/velká písmena.
a = "Hello, World!"
print(a.lower())
a = "Hello, World!"
print(a.upper())
hello, world!
HELLO, WORLD!
3. 5. 1. 5. Přepsání části textu – replace
Přepíše písmeno nebo část textu. Pozor na rozlišení malých/velkých písmen. Viz příklad
a = "Hello, World!"
print(a.replace("H", "J")) #s jedním unikátním znakem
print(a.replace("Hel", "J")) #část textu za jedno písmeno
print(a.replace("L", "J")) #velké písmeno v textu není, nestane se nic
print(a.replace("l", "J")) #přepíše každé takové písmeno v textu
Jello, World!
Jlo, World!
Hello, World!
HeJJo, WorJd!
3. 5. 1. 6. Vynechání mezer před a za textem – strip
Vynechá přebytečné mezery před a za textem, mezery mezi slovy ale zůstanou.
a = " Hello, World! "
print(a.strip())
a = " Hello, World! "
print(a.strip().upper()) #v kombinaci s další funkcí
Hello, World!
HELLO, WORLD!
3. 5. 1. 7. Zjištění zdali obsahuje… – in/not in
Pro zjištění, zdali proměnná obsahuje část textu se používají in/not in
txt = "The rain in Spain stays mainly in the plain"
x = "ain" in txt
print(x)
txt = "The rain in Spain stays mainly in the plain"
x = "ain" not in txt
print(x)
True
False
3. 5. 1. 8. Napojování string na jiný string
Spojení dvou proměnných se dá udělat jako v matematice pomocí znaménka +
a = "Hello"
b = "World"
c = a + b #propojí pouze slova, mezeru je třeba přidat jinak
print(c)
d = a + " " + b #s přidáním mezery
print(d)
HelloWorld
Hello World
3. 5. 1. 9. Escape characters
Některé znaky není možné ve string formátu použít, abychom je byli schopni použít, musíme využít tzv. escape characters. Tyto escape characters obsahují znak obráceného lomítka \ a za ním znak, který chceme použít. Příkladem takového znaku, který by jinak nešel použít je uvozovka.
Kód | Výsledek |
\’ | apostrof |
\” | uvozovky |
\\ | lomítko |
\n | nový řádek |
\t | tabulátor |
\b | backspace |
txt = "We are the so-called \"Vikings\" from the north."
txt2 = "We are the so-called \'Vikings\' from the north."
txt3 = "\\" #vloží pouze jednu \
txt4 = "první řádek\ndruhý řádek"
txt5 = "Hello \bWorld!" #vymaže znak před \b
txt6 = "Hello\tWorld!"
print(txt)
print(txt2)
print(txt3)
print(txt4)
print(txt5)
print(txt6)
We are the so-called "Vikings" from the north.
We are the so-called 'Vikings' from the north.
\
první řádek
druhý řádek
HelloWorld!
Hello World!
3. 6. Datový typ Boolean
Boolean reprezentuje dvě hodnoty: true a false. Používají se při porovnávání nebo if…else funkci. Stejně dotazování se na hodnoty je zpravidla True. Pouze číslo 0 a prázdné listy, tuply, sety a slovníky a samotné False nebo None vrací False.
print(10 > 9)
print(10 == 9)
print(10 < 9)
x = "Hello"
y = 0
f = False
z = None
print(bool(x))
print(bool(y))
print(bool(f))
print(bool(z))
True
False
False
True
False
False
False
3. 6. 1. Aritmetické operátory
Operátory sloužící k práci s čísly.
Operátor | Název | Příklad |
+ | součet | x + y |
– | odečítání | x – y |
* | násobení | x * y |
/ | dělení | x / y |
% | zbytek po dělení | x % y |
** | exponenciál | x ** y |
// | dělení beze zbytku | x // y |
x = 5
y = 3
print(x + y, x - y, x * y, x / y, x % y, x ** y, x // y)
8 2 15 1.6666666666666667 2 125 1
3. 6. 2. Přiřazovací operátory
Přiřazují hodnoty za proměnné.
Operátor | Příklad | Význam |
= | x = 5 | x = 5 |
+= | x += 3 | x = x + 3 |
-= | x -= 3 | x = x – 3 |
*= | x *= 3 | x = x * 3 |
/= | x /= 3 | x = x / 3 |
%= | x %= 3 | x = x % 3 |
//= | x //= 3 | x = x // 3 |
**= | x **= 3 | x = x ** 3 |
x = 5
print(x)
x += 3
print(x)
x -= 3
print(x)
x *= 3
print(x)
x /= 3
print(x)
x %= 3
print(x)
x //= 3
print(x)
x = 5 #x je z předchozí operace 0
x **= 3
print(x)
5
8
5
15
5.0
2.0
0.0
125
(!!) Tyto funkce přiřazují za proměnnou, proto se v příkladě pokaždé vychází z předchozí hodnoty, která se každou operací mění.
3. 6. 3. Srovnávací operátory
Tyto operátory srovnávají dvě hodnoty, přitom vracejí boolovské hodnoty. Při srovnávání proměnných nedochází ke změně hodnot dané proměnné.
(!!) Pozor, x = y není x == y!!
x = y přiřadí proměnné x hodnotu proměnné y
x == y ověří, zdali x a y mají stejnou hodnotu
Operátor | Název | Přklad |
== | rovno | x == y |
!= | není rovno | x != y |
> | větší než | x > y |
< | menší než | x < y |
>= | větší nebo rovno | x >= y |
<= | menší nebo rovno | x <= y |
x = 5
y = 3
print(x == y, x != y, x > y, x < y, x >= y, x <= y)
False True True False True False
3. 7. Seznam (list)
Seznam je uspořádaný a měnitelný. V pythonu se zapisuje hranatými závorkami [ ] (pravý alt + f, pravý alt + g). Vytvoření seznamu je zcela jednoduché:
seznam = [12, 30, 5, 'slovo']
print(seznam)
[12, 30, 5, 'slovo']
Stejného výsledku lze dosáhnout i funkcí list(). Pozor na zdvojené závorky.
seznam1 = list((12, 30, 5, 'slovo'))
print(seznam1)
[12, 30, 5, 'slovo']
3. 7. 1. Získávání hodnot indeováním
Python umožňuje vyhledávat hodnoty ze seznamu za pomoci jejich indexů, a to i záporných. Index [-1] proto najde poslední hodnotu v seznamu.
seznam = [12, 30, 5, 'slovo', "něco", 35]
print(seznam[1])
print(seznam[-1])
30
35
(!!) Pozor na číslování pythonu!
První hodnota v seznamu má index 0
Je možné vyhledávat i pomocí intervalu indexů a to opět v kladných i záporních. První hodnota indexu je započtena, ale poslední už ne(!).
seznam = [12, 30, 5, 'slovo', "něco", 35]
print(seznam[2:5])
#hodnota s indexem 2 - číslo 5 je vrácena
#hodnota s indexem 5 - číslo 35 již ne
print(seznam[-5:-2])
[5, 'slovo', 'něco']
[30, 5, 'slovo']
3. 7. 2. Změna hodnot v seznamu
Změnu určité hodnoty v seznamu lze udělat pomocí jejího indexu.
#nahrazení hodnoty 30 hodnotou "ahoj"
seznam = [12, 30, 5, 'slovo', "něco", 35]
seznam[1] = "ahoj"
print(seznam)
[12, 'ahoj', 5, 'slovo', 'něco', 35]
3. 7. 3. Vypsání hodnot ze seznamu cyklem
Cyklus v seznamu, více v kapitole o cyklech. Dojde k vypsání všech hodnot seznamu.
seznam = [12, 30, 5, 'slovo']
for x in seznam:
print(x)
12
30
5
slovo
3. 7. 4. Kontrola, jestli seznam obsahuje…
Pro zjištění, jestli se určitá hodnota nachází v seznamu, použijeme in.
seznam = [12, 30, 5, 'slovo']
if "slovo" in seznam:
print("yes!")
yes!
3. 7. 5. Velikost seznamu
Délku seznamu lze zjistit stejně jako délku stringu pomocí funkce len(). Funkce navrátí počet věcí v seznamu
seznam = [12, 30, 5, 'slovo']
print(len(seznam))
4
3. 7. 6. Přidávání do seznamu
Pro přidávání do seznamu se používá funkce append().
seznam = [12, 30, 5, 'slovo']
seznam.append(15) #přidá hodnotu 15
print(seznam)
[12, 30, 5, 'slovo', 15]
Chceme-li přidat na konkrétní místo v seznamu, použijeme funci index().
seznam = [12, 30, 5, 'slovo']
seznam.insert(0, 15) #0 je index, 15 je hodnota kterou přidáváme
print(seznam)
[15, 12, 30, 5, 'slovo']
3. 7. 7. Mazání ze seznamu
Pro mazání ze seznamu je tu hned několik metod.
3. 7. 7. 1. Smazání konkrétní hodnoty
Pokud známe hodnotu, kterou chceme smazat, použijeme funkci remove().
seznam = [12, 30, 5, 'slovo']
seznam.remove('slovo')
print(seznam)
[12, 30, 5]
3. 7. 7. 2. Mazání dle indexu
Funkce pop() smaže konkrétní index nebo poslední hodnotu, pokud není index specifikován.
seznam = [12, 30, 5, 'slovo']
seznam.pop() #bez speficikace indexu smaže poslední hodnotu
print(seznam)
seznam = [12, 30, 5, 'slovo']
seznam.pop(1) #smaže hodnotu s indexem 1
print(seznam)
[12, 30, 5]
[12, 5, 'slovo']
Obdobně i funkce del smaže hodnotu s daným indexem. Bez specifikace indexu smaže celý seznam.
seznam = [12, 30, 5, 'slovo']
del seznam
#vymaže celý seznam, print(seznam) by vyhodilo error
seznam = [12, 30, 5, 'slovo']
del seznam[1]
print(seznam)
[12, 5, 'slovo']
Pro vymazání všech hodnot seznamu slouží funkce clear(). Narozdíl od předchozí del nesmaže celý seznam, pouze hodnoty v něm.
seznam = [12, 30, 5, 'slovo']
seznam.clear()
print(seznam)
[]
3. 7. 7. 3. Kopírování seznamu
Seznam nelze jedonušše zkopírovat napsáním seznam1 = seznam2, protože tím by seznam2 pouze odkazoval na seznam1 a jakákoliv změna v seznam1 by se tudíž projevila i v seznam2.
Proto používáme funkci copy().
seznam1 = [12, 30, 5, 'slovo']
seznam2 = seznam1.copy()
print(seznam2)
[12, 30, 5, 'slovo']
3. 7. 8. Spojení více seznamů
Existuje vícero metod jak propojit seznamy. Nejjednodušší je použít operátor +. Díky tomu dojde k vytvoření nového seznamu s požadovanými hodnotami.
seznam1 = [12, 30, 5, 'slovo']
seznam2 = ["slovo2", 100, 50.4]
seznam3 = seznam1 + seznam2
print(seznam3)
[12, 30, 5, 'slovo', 'slovo2', 100, 50.4]
Další možností je rozšíření sezamu pomocí funkce append() a cyklu. Není třeba vytvářet nový seznam, dojde k rozšíření existujícího.
seznam1 = [12, 30, 5, 'slovo']
seznam2 = ["slovo2", 100, 50.4]
for x in seznam2:
seznam1.append(x)
print(seznam1)
[12, 30, 5, 'slovo', 'slovo2', 100, 50.4]
Další možností je použití funkce extend(), která přidá seznam2 na konec seznamu1.
seznam1 = [12, 30, 5, 'slovo']
seznam2 = ["slovo2", 100, 50.4]
seznam1.extend(seznam2)
print(seznam1)
[12, 30, 5, 'slovo', 'slovo2', 100, 50.4]
3. 8. Tuple
Tuple je uspořádáný a neměnný. V pythonu se píše se závorkami ().
tupl1 = ("banán", "jabko", 33)
print(tupl1)
('banán', 'jabko', 33)
Tuple lze vytvořit také funkcí tuple(). Pozor na zdvojené závorky.
tupl1 = tuple(("jabko", "banán", 33))
print(tupl1)
('jabko', 'banán', 33)
3. 8. 1. Získávání hodnot indexováním
Stejně jako u seznamu lze hodnoty získat indexováním. Stejně jako u seznamu lze používat i záporných indexů, kdy index [-1] odkazuje na poslední hodnotu. Index [0] vzhledem k číslování v pythonu oskazuje na první hodnotu.
tupl1 = ("banán", "jabko", 33, "mrkev", 78.7)
print(tupl1[1])
print(tupl1[-1])
jabko
78.7
Je možné vyhledávat i pomocí intervalu indexů a to opět v kladných i záporních. První hodnota indexu je započtena, ale poslední už ne(!).
tupl1 = ("banán", "jabko", 33, "mrkev", 78.7)
print(tupl1[1:3])
print(tupl1[-3:-1])
('jabko', 33)
(33, 'mrkev')
3. 8. 2. Změna hodnot v tuple
Jakmile je tuple vytvořen, nelze jeho hodnoty měnit (!!). Jak bylo zmíněno, tuply jsou neměnné.
Existuje ale možnost, jak je přeci jen změnit. Tuple lze změnit na seznam, v něm změnit hodnoty jako v každém jiném seznamu a následně z něj udělat opět tuple.
tupl = ("banán", "jabko", "mrkev")
seznam = list(tupl)
seznam[1] = "kiwi"
tupl = tuple(seznam)
print(tupl)
('banán', 'kiwi', 'mrkev')
3. 8. 3. Vyhledání hodnot tuple cyklem
Cyklus v tuple, více v kapitole o cyklech. Dojde k vypsání všech hodnot tuple.
tupl = ("banán", "jabko", "mrkev")
for y in tupl:
print(y)
banán
jabko
mrkev
3. 8. 4. Kontrola, zdali tuple obsahuje…
Pro zjištění, jestli se určitá hodnota nachází v tuple, použijeme in.
tupl = ("banán", "jabko", "mrkev")
if "mrkev" in tupl:
print("ano")
ano
3. 8. 5. Velikost tuple
Délku tuple lze zjistit stejně jako délku seznamu pomocí funkce len(). Funkce navrátí počet věcí v tuple.
tupl = ("banán", "jabko", "mrkev")
print(len(tupl))
3
3. 8. 6. Přidávání do tuple
Tuple je neměnný a proto do něj nelze ani přidávat hodnoty. Stejně jako u kapitoly o změně hodnot v tuple, lze jej přeměnit na seznam a ten doplnit.
tupl = ("banán", "jabko", "mrkev")
seznam = list(tupl)
seznam.append("kiwi")
tupl = tuple(seznam)
print(tupl)
('banán', 'jabko', 'mrkev', 'kiwi')
3. 8. 7. Vytvoření tuple s jednnou hodnotou
Pokud je v tuple jen jedna hodntoa, jeza ni třeba dodat čárku, jinak python nerozezná že se jedná o tuple a bude jej považovat za pronměnnou.
tupl1 = ("jabko",)
print(type(tupl1))
#není tupl
tupl2 = ("banán")
print(type(tupl2))
<class 'tuple'>
<class 'str'>
3. 8. 8. Mazání z tuple
Vzhledem k tomu, že je tuple neměnný, nelze z něj mazat. Jedinnou možností je převést tuple na seznam (viz v kapitole o změně hodnot nebo o přidávání do tuple).
Tuple lze pouze smazat.
tupl1 = ("jabko", "banán", 33)
del tupl1
3. 8. 9. Spojení tuplů
Tuply jsou neměnné, proto pro spojení existujících tuple musíme vytvořit nový tuple. A nebo opět převést tuple na seznam.
tupl1 = ("jabko", "banán", 33)
tupl2 = ("kiwi", "soja")
tupl3 = tupl1 + tupl2
print(tupl3)
('jabko', 'banán', 33, 'kiwi', 'soja')
3. 9. Sety
Set je neuspořádaný a bez indexace. V pythonu se sety píší se složenými závorkami { } ( (pravý ALT + B, pravý ALT + N).
set1 = {"apple", "banana", "cherry"}
print(set1)
{'cherry', 'apple', 'banana'}
Pozor (!!) Sety jsou neuspořádané a proto není jisté, v jakém pořadí se hodnoty vypíší.
Stejně tak lze set vytvořit pomocí set().
#používají se zdvojené závorky
set1 = set(("apple", "banana", "cherry"))
print(set1)
3. 9. 1. Získávání hodnot
Hodnoty nelze získávat skrze indexy, je proto nutné procházet skrze for cyklus, nebo se zeptat na specifickou hodnotu, která je v setu uložena použitím in.
#cyklus skrze seznam
set1 = {"apple", "banana", "cherry"}
for x in set1:
print(x)
banana
cherry
apple
Dotazování na konkrétní hodnotu viz níže, výsledkem není hodnota, ale boolean.
#dotazování na konkrétní hodnotu
set1 = {"apple", "banana", "cherry"}
print("banana" in set1)
True
3. 9. 2. Změna hodnot v setu
Jakmile je set vytvořen, jeho hodnoty nelze měnit. Jde ale přidávat, popřípadě mazat.
3. 9. 3. Přidávání hodnot
Pokud chceme přidat pouze jednu hodnotu, použijeme funkci add().
set1 = {"apple", "banana", "cherry"}
set1.add("kiwi")
print(set1)
{'apple', 'banana', 'cherry', 'kiwi'}
Pokud potřebujeme přidat více hodnot, použiejem funkci update().
set1 = {"apple", "banana", "cherry"}
set1.update(["kiwi", "orange", "třešeň"])
print(set1)
{'banana', 'kiwi', 'orange', 'cherry', 'třešeň', 'apple'}
3. 9. 4. Mazání hodnot
Pro mazání lze použít buďto remove() nebo discard(). Rozdílem mezi fukncemi je při mazání hodnot, které seznam neobsahuje.
Pokud použijeme remove() pro hodnotu která v seznamu není, python vypíše error.
set1 = {"apple", "banana", "cherry"}
set1.remove("pomeranč")
print(set1)
KeyError: 'pomeranč'
Pokud použijeme discard() na hodnotu, která v seznamu není, žádný error se nevypíše.
set1 = {"apple", "banana", "cherry"}
set1.discard("pomeranč")
print(set1)
{'cherry', 'apple', 'banana'}
Mazat se dá i pomocí pop(), které smaže poslední hodnotu v setu. Jelikož jsou sety neuspořádané, není jasné, která hodnota to bude!
set1 = {"apple", "banana", "cherry"}
x = set1.pop()
print(x) #vypíše, která hodnota bude smazána
print(set1)
banana
{'apple', 'cherry'}
Opět lze použít clear() pro vymazání celého seznamu.
set1 = {"apple", "banana", "cherry"}
x = set1.clear()
print(set1)
set()
Funkce del pak smaže celý seznam.
set1 = {"apple", "banana", "cherry"}
del set1
print(set1)
3. 9. 5. Délka setu
Délku seznamu zjistíme stejně jako obvykle funkcí len().
set1 = {"apple", "banana", "cherry"}
print(len(set1))
3
3. 9. 6. Spojení více setů
Na spojení setů existují dva způsoby. Lze použít funkci union(), která vytvoří nový set obsahující hodnoty z předchozích. Druhou možností je update(), která vloží hodnoty z jednoho setu do jiného, již existujícího.
set1 = {"apple", "banana", "cherry"}
set2 = {1,2,3}
set3 = set1.union(set2)
print(set3)
{'banana', 1, 2, 3, 'apple', 'cherry'}
set1 = {"apple", "banana", "cherry"}
set2 = {1,2,3}
set1.update(set2)
print(set1)
{1, 2, 3, 'apple', 'banana', 'cherry'}
Obe mětody vynechají duplicitní hodnoty. Jiné metody, které zanechají pouze duplicitní, nebo naopak vynecahjí duplicitní, najdete zde.
3. 10. Slovník (dictionary)
Slovníky jsou neuspořádané, měnitelné a inexované. V pythonu se slovníky píší se složenými závorkami {} (pravý ALT + B, pravý ALT + N). Obsahují key a value.
slovnik = {"id": 1, "barva": "modrá", "značka": "Nissan"}
print(slovnik)
{'id': 1, 'barva': 'modrá', 'značka': 'Nissan'}
Vytvořit slovník lze i pomocí dict().
slovnik = dict(id=1, barva="modrá", značka="Nissan")
#key nejsou string
#namísto dvojtečky jsou definovány rovnítkem
print(slovnik)
{'id': 1, 'barva': 'modrá', 'značka': 'Nissan'}
3. 10. 1. Získávání hodnot ze slovníku
K hodnotám ve slovníku lze přistupovat skrze jejich klíče (key), napsaného ve hranatých závorkách.
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
x = jizdnirady["misto_odj"]
Brno
Dále lze použít get(), které bude mít stejný efekt.
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
y = jizdnirady.get("misto_odj")
Brno
3. 10. 2. Změna hodnot slovníku
Změnit konkrétní hodnotu slovníku lze skrze její klíč.
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
jizdnirady["misto_odj"] = "Praha"
print(jizdnirady)
{'id_trasy': 1, 'misto_odj': 'Praha', 'misto_prij': 'Praha'}
3. 10. 3. Cyklus skrze slovník
Použitím for cyklu skrze slovník lze vypsat samotné hodnoty, ale i jejich klíče.
3. 10. 3. 1. Vypsání klíčů
Následujícím způsobem vypíšeme všechny klíče ze slovníku.
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
for x in jizdnirady:
print(x)
id_trasy
misto_odj
misto_prij
3. 10. 3. 2. Vypsání hodnot
Takto lze vypsat všechny hodnoty ze slovníku.
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
for x in jizdnirady:
print(jizdnirady[x])
1
Brno
Praha
Druhá možnost je použít values().
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
for x in jizdnirady.values():
print(x)
1
Brno
Praha
3. 10. 3. 3. Vypsání klíčů i hodnot
K vypsání klíčů i proměnných použijeme funkci items().
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
for x,y in jizdnirady.items():
print(x,y)
id_trasy 1
misto_odj Brno
misto_prij Praha
3. 10. 4. Kontrola, jestli slovník obsahuje klíč…
K zjištění, jestli slovník obsahuje daný klíč, použijeme funkci in.
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
if "misto_prij" in jizdnirady:
print("yes")
yes
3. 10. 5. Délka slovníku
Pro zjištění, kolik klíčů slovník obsahuje použijeme funkci len().
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
print(len(jizdnirady))
3
3. 10. 6. Přidávání do slovníku
Pro přidání do slovníku slouží nový klíč a jeho hodnota.
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
jizdnirady["zastavka"] = "Zvonařka"
print(jizdnirady)
{'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha', 'zastavka': 'Zvonařka'}
3. 10. 7. Mazání ze slovníku
Pro mazání existuje několik metod podle toho co potřebujeme smazat.
3. 10. 7. 1. Mazání klíče
Potřebujeme-li odebrat nějaký klíč, použijeme pop().
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
jizdnirady.pop("id_trasy")
print(jizdnirady)
{'misto_odj': 'Brno', 'misto_prij': 'Praha'}
3. 10. 7. 2. Mazání posledního přidaného klíče
Funkce popitem() smaže poslední přidaný klíč. Před verzí 3.7. smazalo náhodný klíč.
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
jizdnirady.popitem()
print(jizdnirady)
{'id_trasy': 1, 'misto_odj': 'Brno'}
3. 10. 7. 3. Mazání hodnot dle klíče
Chceme-li smazat hodnotu dle konkrétního klíče, použijeme del. Pokud za del nic nedosadíme, můžeme smazat celý slovník.
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
del jizdnirady["id_trasy"]
#del jizdnirady smazalo by celý slovník
print(jizdnirady)
{'misto_odj': 'Brno', 'misto_prij': 'Praha'}
3. 10. 7. 4. Vymazání slovníku
Všechny klíče i hodnoty ze slovníku smaže funkce clear().
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
jizdnirady.clear()
print(jizdnirady)
{}
3. 10. 8. Kopírování slovníků
Pro kopírování slovníků lze využít buďto funkce copy()
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
jizdnirady2 = jizdnirady.copy()
print(jizdnirady2)
nebo vytvořením nového slovníku skrze dict().
jizdnirady = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
jizdnirady2 = dict(jizdnirady)
print(jizdnirady2)
3. 10. 9. Slovníky se slovníky
Slovník může obsahovat další slovník. Takové struktuře se říká “nested dictionaries”.
jizdnirady = {
"rad1":{'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'},
"rad2":{'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'},
"rad3":{'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
}
print(jizdnirady)
{'rad1': {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}, 'rad2': {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}, 'rad3': {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}}
Pro vložení tří již existujících seznamů do seznamu uděláme následovně:
rad1 = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
rad2 = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
rad3 = {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}
jizdnirady = {
"rad1":rad1,
"rad2":rad2,
"rad3":rad3
}
print(jizdnirady)
{'rad1': {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}, 'rad2': {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}, 'rad3': {'id_trasy': 1, 'misto_odj': 'Brno', 'misto_prij': 'Praha'}}