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. |