Python/Kenjiro995/Množiny

Z Wikiverzity

Definice množiny[editovat]

a = {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[editovat]

Do 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[editovat]

Jednotlivé 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[editovat]

a = {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[editovat]

a = { 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}