Dátové štruktúry a objekty 1¶
Okrem základných dátových typov Python štandardne poskytuje typy pre kolekcie objektov, ako napr. zoznamy, množiny a mapy a dátové objekty pre reprezentáciu dátumov.
Zoznamy¶
Zoznamy sú definované ako postupnosť hodnôt ku ktorým je možné pristupovať cez index (indexovanie je od 0). V Pythone môžu zoznamy obsahovať hodnoty rôznych typov. Na rozdiel od reťazcov, prvky zoznamov je možné meniť. Zoznamy sa definujú v hranatých zátvorkách []
a jednotlivé prvky sú oddelené ,
.
numbers = ["zero", 1, 2, 3] # zoznam môže obsahovať prvky rôznych typov
numbers
Indexovanie je podobné ako pri reťazcoch, záporné indexy označujú prvky od konca zoznamu.
print(numbers[0]) # = ‘zero’
print(numbers[-3]) # = 1
numbers[0] = 0 # na rozdiel od reťazcov, prvky môžete meniť
print(numbers[0]) # = 0
Aj pri zoznamoch môžete používať +
na spájanie a *
na opakovanie.
lower_letters = ['a', 'b', 'c']
letters = lower_letters + ['A', 'B', 'C']
letters # = ['a', 'b', 'c', 'A', 'B', 'C']
Podobne ako reťazce, zoznamy sú objekty, ktoré majú definované metódy.
numbers.append(5) # na koniec zoznamu môžete pridať ďalší prvok metódou list.append(x) (numbers = [0, 1, 2, 3, 5])
numbers.insert(4,4) # a na zvolenú pozíciu metódou list.insert(index, x) (numbers = [0, 1, 2, 3, 4, 5])
numbers.reverse() # prehodí poradie prvkov (numbers = [5, 4, 3, 2, 1, 0])
numbers.sort() # usporiada ich podľa poradia
numbers # = [0, 1, 2, 3, 4, 5]
Dĺžku zoznamu môžete zistiť funkciou len
.
len(numbers) # = 6
Pomocou rozsahov [od:do]
môžete vytvoriť kópiu zoznamu, ktorú môžete nezávisle meniť.
# kópiu celého zoznamu môžete vytvoriť ako
numbers = [0, 1, 2, 3, 4, 5]
new_numbers = numbers[:]
Rozsahy môžete aj nahradiť za iný zoznam (nemusí mať rovnaký počet prvkov ako rozsah).
numbers[1:3] = ["one", "two"]
numbers[-3:] = [] # rozsah odstránite zo zoznamu priradením prázdneho zoznamu
numbers[:] = [] # takto môžete zmazať aj všetky prvky zoznamu
Prvky môžete odstrániť aj pomocou príkazu del
.
del new_numbers[0] # odstráni prvý prvok (new_numbers = [1, 2, 3, 4, 5])
del new_numbers[-3:] # odstráni posledné 3 prvky
new_numbers # = [1, 2]
Pomocou del
môžete odstrániť aj celú premennú.
# od tohto príkazu ďalej, prístup k premennej new_numbers skončí chybou, musíte jej znovu priradiť novú hodnotu
del new_numbers
Môžete definovať aj vnorené zoznamy (nemusia mať rovnaký počet prvkov).
nested_list = [["one", "two"], [1, 2, 3]]
nested_list[0][1] # = ‘two’
nested_list[1][0] # = 1
Reťazec môžete rozdeliť na časti oddelené oddeľovačom metódou s.split(sep)
, ktorá vráti zoznam podreťazcov.
strings = "1,,three".split(",")
strings # = ["1", "", "three"] # čísla sa automaticky neprevedú z reťazca
Ak zoznam obsahuje reťazce, môžete ich spojiť oddeľovačom sep
metódou sep.join(list)
.
print("; ".join([str(1), "two", "three"])) # vypíše ‘1; two; three’ - všetky hodnoty musia byť reťazec (číslo 1 sme previedli funkciou str)
Podrobnejší popis metód a viac o zoznamoch si môžete prečítať tu (v angličtine).