Python/Kenjiro995/Množiny
Definice množiny
editovata = {3,3,5,1,1,1,1}
print(a) # vypíše celou množinu, opakující se hodnoty ignoruje
print(type(a)) # vypíše typ objektu --> třída set (neboli množina)
print(len(a)) # vypíše počet položek v množině, opakující se hodnoty ignoruje
Výstup:
{1, 3, 5} <class 'set'> 3
Vytvoření prázdné množiny:
a = set() # vytvoření prázdené množiny
print(a) # vypíše celou množinu --> set() protože je množina prázdná
print(type(a)) # vypíše typ objektu --> třída set (neboli množina)
print(len(a)) # vypíše počet položek v množině --> 0 protože je množina prázdná
Výstup:
set() <class 'set'> 0
Přídávání hodnot do množiny
editovatDo existující množiny můžeme přidávat hodnoty dvěma různými způsoby: metodou add() a metodou update():
a = {3,3,5,1,1,1,1}
a.add(4)
print(a)
a.update({4,8,10,4,4})
print(a)
Výstup:
{1, 3, 4, 5} {1, 3, 4, 5, 8, 10}
Odtraňováním hodnot z množiny
editovatJednotlivé hodnoty lze z množiny odstranit třemi způsoby. Metoda discard() přebírá jeden argument a zadanou hodnotu odebere z množiny. Pokud metodu discard() voláme s hodnotou, která v množině neexistuje, neprovede se nic. Nevznikne chyba. Jde o prázdnou operaci. Metoda remove() také přebírá hodnotu jediného argumentu a také odstraňuje hodnotu z množiny. Odlišnost se projeví v případě, kdy se zadaná hodnota v množině nenachází. V takovém případě metoda remove() vyvolá výjimku KeyError. Metoda pop() odstraní jeden prvek z množiny a vrátí jeho hodnotu. Ale množiny jsou neuspořádané a neexistuje u nich nic takového jako poslední hodnota. Proto také neexistuje možnost ovlivnit, která hodnota bude odstraněna. Je to zcela náhodné. Metoda clear() odstraní všechny prvky množiny a množina se stane prázdnou. Pokus o volání metody pop() pro prázdnou množinu vede k vyvolání výjimky KeyError.
a = {1, 3, 6, 10, 15, 21, 28, 36, 45}
a.discard(10)
print(a)
a.discard(1)
print(a)
a.discard(36)
print(a)
Výstup:
{1, 3, 36, 6, 45, 15, 21, 28} {3, 36, 6, 45, 15, 21, 28} {3, 6, 45, 15, 21, 28}
a = {1, 3, 6, 10, 15, 21, 28, 36, 45}
print(a.pop())
print(a)
print(a.pop())
print(a)
print(a.pop())
print(a)
print("=" * 36)
a.clear()
print(a)
Výstup:
1 {3, 36, 6, 10, 45, 15, 21, 28} 3 {36, 6, 10, 45, 15, 21, 28} 36 {6, 10, 45, 15, 21, 28} ==================================== set()
Početní operace s množinami
editovata = {1,2,3,4,5}
b = {4,5,6,7,8}
print("Sjednocení", a | b)
print("Průnik", a & b)
print("Rozdíl", a - b)
print("Symetrický rozdíl", a ^ b)
Výstup:
Sjednocení {1, 2, 3, 4, 5, 6, 7, 8} Průnik {4, 5} Rozdíl {1, 2, 3} Symetrický rozdíl {1, 2, 3, 6, 7, 8}
a = {1,2,3,4,5}
b = {4,5,6,7,8}
print("Sjednocení", a.union(b))
print("Průnik", a.intersection(b))
print("Rozdíl", a.difference(b))
print("Symetrický rozdíl", a.symmetric_difference(b))
Výstup:
Sjednocení {1, 2, 3, 4, 5, 6, 7, 8} Průnik {4, 5} Rozdíl {1, 2, 3} Symetrický rozdíl {1, 2, 3, 6, 7, 8}
Generování množin
editovata = { x**2 for x in range(4) }
b = { x+y for x in range(1,7) for y in range(1,7) }
print(a)
print(b)
Výstup:
{0, 1, 4, 9} {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}