N-tice Tuple
Používá se k uložení více položek do jedné proměnné. Je to uspořádaná a neměnná kolekce. Zapisuje se pomocí kulatých závorek.
Jsou definovány jako objekt s datovým typem ‚tuple‘.
Chcete-li vytvořit n-tici pouze s jednou položkou, musíte za položku přidat čárku, jinak ji Python jako n-tici nerozpozná:
jeTuple = ("řetězec",)
print(type(jeTuple)) # <class 'tuple'>
# Není N-tice Tuple, ale str...
neniTuple = ("řetězec")
print(type(neniTuple))
Jednotlivé položky n-tice Tuple mohou obsahovat libovolné datové typy stejně jako seznam List.
Konstruktor
Je možné používat tuple() konstruktor:
mojeTuple = tuple(("kámen", "nůžky", "papír")) # pozor na ((zdvojené závorky))
print(mojeTuple)
Změňte „neměnné“ hodnoty n-tice
Jakmile je n-tice vytvořena, nemůžete měnit její hodnoty. N-tice jsou neměnné nebo spíše „neměnné“.
N-tici můžete převést na seznam, změnit seznam a převést seznam zpět na n-tici.
t = ("kámen", "nůžky", "papír")
l = list(t)
l[1] = "vrtačka"
t = tuple(l)
print(t)
Pro Tuple existují buď stejné metody jako pro List nebo pokud něco n-tice neumožňuje, lze to obejít převedením na seznam a zpět.
Zopakujeme si rozbalení do proměnných:
barvy = ("červená", "žlutá", "fialová")
(jablko, hruska, svestka) = barvy
print(jablko)
print(hruska)
print(svestka)
Použití * hvězdičky
Pokud je počet proměnných menší než počet hodnot, můžete k názvu proměnné přidat * „Asterisk“ a hodnoty budou přiřazeny proměnné jako seznam:
barvy = ("červená", "zelená", "modrá", "žlutá", "oranžová", "fialová")
(jablko, hruska, *svestka) = barvy
print(jablko)
print(hruska)
print(svestka)
Pokud je hvězdička přidána k jinému názvu proměnné než k poslednímu, Python bude proměnné přiřazovat hodnoty, dokud počet zbývajících hodnot nebude odpovídat počtu zbývajících proměnných:
barvy = ("červená", "zelená", "modrá", "žlutá", "oranžová", "fialová")
(jablko, *ostatni, svestka) = barvy
print(jablko)
print(ostatni)
print(svestka)
Násobení n-tice
Pokud chcete vynásobit obsah n-tice daným počtem, můžete použít operátor *:
auta = ("kabriolet", "sedan", "kombi")
garaz = auta * 2
print(garaz)
Množiny Set
Jsou neindexované neuspořádané a „neměnitelné“ kolekce. Jejich položky jsou neměnitelné, ale můžete je odstranit a nahradit.
Neumožňují duplicitní hodnoty.
Neuspořádané znamená, že položky v Set nemají definované pořadí a mohou objevit v jiném pořadí pokaždé, když je použijete. Nelze na ně odkazovat podle indexu nebo klíče.
Zapisují se pomocí složených závorek:
mnozina = {"trojúhelník", "čtverec", "obdelník"}
print(mnozina)
Hodnoty True a 1 nebo False a 0 jsou v množinách považovány za stejné hodnoty a tudíž duplikáty:
mnozina = {"ano", "ne", True, False, 0, 1, 2}
print(mnozina)
Přidávání položek
Jakmile je sada vytvořena, nemůžete měnit její položky, ale můžete přidávat nové položky.
Chcete-li přidat jednu položku, použijte metodu add().
Chcete-li přidat položky z jiné množiny, použijte metodu update().
Objekt v metodě update() nemusí být množina, může to být libovolný iterovatelný objekt (n-tice, seznamy, slovníky atd.).
auta = {"kabriolet", "sedan", "kombi"}
nakladni = {"kamion", "pick-up", "dodávka"}
specialni = ["autobus", "sanitka"] # List
auta.add("formule")
auta.update(nakladni)
auta.update(specialni)
print(auta)
Odstranění položky
Odebrat položku můžete metodou remove() nebo discard(). Neexistující položka vyvolá v remove() chybu, v discard() ne:
auta = {"kabriolet", "sedan", "kombi"}
auta.remove("traktor") # chyba
auta.discard("traktor")
print(auta)
K odstranění položky můžete také použít metodu pop(), ale tato metoda odstraní náhodnou položku, takže si nemůžete být jisti, která položka bude odstraněna.
Návratovou hodnotou metody pop() je odstraněná položka.
auta = {"kabriolet", "sedan", "kombi"}
odjelo = auta.pop()
print(auta)
print(odjelo)
Slučování množin
Existuje několik metod, které sloučí dvě nebo více množin:
union()aupdate()sloučí položky z obou sad bez duplicit.intersection()zachová POUZE duplicitní prvky.different()zachová prvky první množiny, které nejsou v dalších.symmetric_difference()zachovává všechny prvky KROMĚ duplicitních.
tvary = {"kruh", "čtverec", "trojúhelník"}
cisla = { 1, 2, 3}
znaky = { 'A', 'B', 'C'}
vysledek1 = tvary.union(cisla, znaky)
vysledek2 = tvary | cisla | znaky # union ekvivalent
print(vysledek1)
print(vysledek2)
Sloučení množiny s jinou kolekcí
Metoda union() umožňuje spojit sadu s jinými datovými typy, jako jsou seznamy nebo n-tice, ale|ne.
Výsledkem bude množina:
x = { 'A', 'B', 'C'} # 'set'
y = ( 1, 2, 3)       # 'tuple'
z = [ 'D', 4, 5]     # 'list' 
vysledek = x.union(y, z)
vysledek = x | y | z # TypeError
print(vysledek)
print(type(vysledek)) # <class 'set'>
Metoda update() vloží všechny položky z jedné množiny do druhé:
x = { 'A', 'B', 'C'}
y = { 'd', 'e', 'f'}
x.update(y)
print(x)
Metoda intersection() „průnik“ vrátí novou množinu, která obsahuje pouze ty prvky, které se nacházejí v obou množinách.
x = { 'A', 'B', 'C'}
y = { 'B', 'C', 'D'}
z1 = x.intersection(y)
z2 = x & y # intersection ekvivalent
print(z1)
print(z2)
Operátor & umožňuje spojovat pouze množiny s množinami, nikoliv s jinými datovými typy, jako to umožňuje metoda intersection().
Metoda intersection_update() také zachová POUZE duplicitní prvky, ale na rozdíl od intersection() změní původní množinu namísto toho, aby vrátila novou.
x = { 'A', 'B', 'C'}
y = { 'B', 'C', 'D'}
x.intersection_update(y)
print(x)
Hodnoty True a 1 nebo False a 0 jsou považovány za stejnou hodnotu.
Metoda difference() vrátí novou množinu, která bude obsahovat pouze ty prvky z první množiny, které nejsou přítomny v druhé množině.
x = { 'A', 'B', 'C'}
y = { 'B', 'C', 'D'}
z1 = x.difference(y)
z2 = x - y # difference ekvivalent
print(z1)
print(z2)
Metoda different_update() také zachová prvky z první množiny, které nejsou v druhé.
x = { 'A', 'B', 'C'}
y = { 'B', 'C', 'D'}
x.difference_update(y)
print(x)
Metoda symmetric_difference() zachová pouze ty prvky, které NEJSOU přítomny v obou množinách.
x = { 'A', 'B', 'C'}
y = { 'B', 'C', 'D'}
z1 = x.symmetric_difference(y)
z2 = x ^ y # symmetric_difference ekvivalent
print(z1)
print(z2)
Metoda symmetric_difference_update() také zachová všechny prvky kromě duplicitních, ale místo vracení nové sady změní původní sadu.
x = { 'A', 'B', 'C'}
y = { 'B', 'C', 'D'}
x.symmetric_difference_update(y)
print(x)
Metody množin
| metoda | operátor | popis | 
|---|---|---|
| add() | Přidá prvek. | |
| clear() | Odebere všechny prvky. | |
| copy() | Vrátí kopii množiny. | |
| difference() | – | Vrátí množinu obsahující rozdíl mezi dvěma nebo více množinami. | 
| difference_update() | -= | Odebere položky množiny, které jsou také zahrnuty v jiné specifikované množině. | 
| discard() | Odstraní z zadanou položku. | |
| intersection() | & | Vrátí množinu, která je průnikem dvou dalších množin. | 
| intersection_update() | &= | Odebere z množiny prvky, které neobsahují další specifikované množiny. | 
| isdisjoint() | Vrátí, zda mají dvě množiny průnik. | |
| issubset() | <= | Vrátí, zda je podmnožinou specifikované množiny. | 
| < | Vrátí, zda jsou všechny položky této množiny přítomny v jiných. | |
| issuperset() | >= | Vrátí, zda tato množina obsahuje specifikovanou podmnožinu. | 
| > | Vrátí, zda všechny položky z jiných, specifikovaných množin jsou přítomny v této množině. | |
| pop() | Odebere prvek z množiny. | |
| remove() | Odebere zadaný prvek. | |
| symmetric_difference() | ^ | Vrátí množinu se symetrickými rozdíly dvou množin. | 
| symmetric_difference_update() | ^= | Vloží symetrické rozdíly z této a jiné množiny. | 
| union() | | | Vrátí množinu obsahující sjednocení množin. | 
| update() | |= | Aktualizujte množinu spojením této množiny s ostatními. | 
