Kolekce
Seznamy
Používají se k uložení více položek do jedné proměnné. Seznamy nebo anglicky „List“ jsou jedním ze čtyř základních datových typů Pythonu používaných k ukládání kolekcí dat. Další jsou Tuple, Set a Dictionary.
Vytvářejí se pomocí hranatých závorek:
seznamZeleniny = ["mrkev", "celer", "petržel", "květák"]
print(seznamZeleniny)
Položky – Items
Jsou měnitelné, umožňují duplicitní hodnoty, seřazeny a indexovány. První položka má index [0], druhá [1] atd. Položky mají definované pořadí. Nové položky budou umístěny na konec seznamu. Seznam je měnitelný. Můžete měnit, přidávat a odebírat položky v seznamu poté, co byl vytvořen.
Protože jsou seznamy indexovány, mohou mít obsahovat více položek se stejnou hodnotou.
Funkce len() vrací počet položek seznamu:
seznamZeleniny = ["mrkev", "celer", "petržel", "květák", "celer"]
print(seznamZeleniny)
print(len(seznamZeleniny))
Položky seznamu mohou být libovolného datového typu. Jeden seznam může obsahovat různé typy dat. Z pohledu Pythonu jsou seznamy definovány jako objekty s datovým typem 'list'
:
seznam1 = ["mrkev", "celer", "petržel"]
seznam2 = [1, 5, 7, 9, 3]
seznam3 = [True, False, False]
seznam4 = ["mrkev", 5, True, "petržel",11 ,False]
# <class 'list'>
print(type(seznam1))
print(type(seznam2))
print(type(seznam3))
print(type(seznam4))
Při vytváření nového seznamu je také možné použít list()
konstruktor:
seznamZeleniny = list(("mrkev", "celer", "petržel")) # všimněte si kulatých závorek
print(seznamZeleniny)
Přístup k položkám
Položky seznamu jsou dostupné pomocí indexu:
seznamZeleniny = ["mrkev", "celer", "petržel", "květák"]
print(seznamZeleniny[2])
Negativní index se počítá od konce seznamu, kde -1 odkazuje na poslední položku, -2 na předposlední položku, atd.
seznamZeleniny = ["mrkev", "celer", "petržel", "květák"]
print(seznamZeleniny[-1])
print(seznamZeleniny[-2])
Rozsah indexů
Zadáním rozsahu vznikne nový seznam se zadanými položkami:
seznamZeleniny = ["mrkev", "celer", "petržel", "květák"]
print(seznamZeleniny[1:3]) # index 3 zahrnut nebude
print(seznamZeleniny[:3]) # od počátku
print(seznamZeleniny[1:]) # do konce
print(seznamZeleniny[-3:-1]) # negativní indexování od konce
Zjištění položky
Chcete-li zjistit, zda je položka v seznamu, použijte klíčové slovo in
:
seznamZeleniny = ["mrkev", "celer", "petržel", "květák"]
if "celer" in seznamZeleniny:
print("Celer je v seznamu.")
else:
print("Celer není v seznamu.")
Změna hodnoty položky
seznam = ["mrkev", "celer", "petržel", "květák"]
seznam[1] = "brambora"
print(seznam)
Chcete-li změnit hodnotu položek v určitém rozsahu:
seznam = ["mrkev", "celer", "petržel", "květák"]
seznam[1:3] = ["brambora", "cibule"]
print(seznam)
Pokud vložíte více položek, než nahradíte, nové položky se vloží tam, kde jste určili, a zbývající položky se podle toho přesunou:
seznam = ["mrkev", "celer", "petržel"]
seznam[1:2] = ["brambora", "cibule"] # na jeden index [1] vkládá dvě položky
print(seznam)
Pokud vložíte méně položek, než nahradíte, nové položky se vloží tam, kde jste určili, a zbývající položky se podle toho smažou:
seznam = ["mrkev", "celer", "petržel"]
seznam[1:3] = ["brambora"] # nahradí index [1] a smaže index [2]
print(seznam)
Chcete-li vložit novou položku seznamu, aniž bychom nahradili některou z existujících hodnot, můžeme použít metodu insert()
.
Metoda insert()
vloží položku na zadaný index:
seznam = ["mrkev", "celer", "petržel"]
seznam.insert(2, "cibule")
print(seznam)
Chcete-li přidat položku na konec seznamu, použijte metodu append()
:
seznam = ["mrkev", "celer", "petržel"]
seznam.append("brokolice")
print(seznam)
Chcete-li k aktuálnímu seznamu připojit prvky z jiného seznamu, použijte metodu extend()
.
kosik = []
ovoce = ["jablko", "hruška", "švestka"]
zelenina = ["mrkev", "celer", "petržel"]
kosik.extend(ovoce)
kosik.extend(zelenina)
print(kosik)
Metoda extend()
nemusí přidávat jen seznamy. Můžete přidat libovolný iterovatelný objekt (n-tice, množiny, slovníky atd.).
kosik = []
ovoce = ["jablko", "hruška", "švestka"]
drogerie = ("mýdlo", "šampon") # n-tice typ 'tuple'
kosik.extend(ovoce)
kosik.extend(drogerie)
print(kosik)
Metodou remove()
můžete první výskyt položky odstranit:
ovoce = ["jablko", "hruška", "švestka", "hruška"]
ovoce.remove("hruška")
print(ovoce)
Metoda pop()
odstraní specifikovanou nebo poslední položku, když neuvedete index:
ovoce = ["jablko", "hruška", "švestka"]
ovoce.pop(1)
print(ovoce)
zelenina = ["mrkev", "celer", "petržel"]
zelenina.pop()
print(zelenina)
Klíčovým slovem del můžete také odstranit specifikovanou položku nebo celý seznam:
ovoce = ["jablko", "hruška", "švestka"]
del ovoce[1]
print(ovoce)
zelenina = ["mrkev", "celer", "petržel"]
del zelenina
Metoda clear()
odstraní všechny položky, ale zachová prázdný seznam:
ovoce = ["jablko", "hruška", "švestka"]
ovoce.clear()
print(ovoce)