Python za radoznale: Podatkovni nizovi (liste, tupleovi, rječnici)

250 views
Skip to first unread message

Hrvoje Katić

unread,
Dec 17, 2011, 9:54:49 AM12/17/11
to hrprog...@googlegroups.com
Podatkovni nizovi (tupleovi, liste i rječnici)

Napomena autora: Nije spomenuto u knjizi, ali dobro je napomenuti da su
podatkovni nizovi u Pythonu zamjena za arrayove (polja) u ostalim
programskim jezicima poput BASIC-a, C++-a, Delphi-a i sl.

U ranijim poglavljima, vidjeli smo za što su korisne varijable. Svaka
varijabla pohranjuje neki objekt, koji može biti string, brojčana
vrijednost ili nešto treće.
Ali, što ako želimo stvarati dulje liste podataka, u slućaju ako radimo
na recimo kalendarskom programu za koji nam trebaju liste mjeseci, te
liste dana u tjednu? Ili, što ako stvaramo telefonski imenik gdje nam je
potrebno stvarati liste imena, adresa i telefonskih brojeva, i te
podatke s vremenom mijenjati, dodavati i brisati? U ovakvim situacijama,
veliku korist imaju nizovi podataka. Sada odmah krećemo sa upoznavanjem
svih podatkovnih nizova i njihove uporabe.

Liste

Liste su, kao što i samo ime kaže, popis nekih podataka. Podaci unutar
lista mogu biti neki Python objekt, kao što su stringovi, cjelobrojne
vrijednosti i sl. Svaki element unutar liste ima svoj broj, a brojanje
elemenata liste počinje od nule, dakle prvi element liste ima indeks 0,
ne 1. Imajte ovo na umu kroz cijeli ostatak ove knjige, kako vas ne bi
zbunjivalo to što je npr. broj četvrtog elementa liste zapravo 3, a ne
4, ili broj sedmog elementa 6, a ne 7.
Liste definiramo tako da unutar uglatih zagrada [] navedemo sve elemente
koji joj pripadaju, a elemente liste odvajamo zarezima. Slijedi primjer
liste:
mjeseci = ['Sijecanj', 'Veljaca', 'Ozujak', 'Travanj', 'Svibanj',
'Lipanj', 'Srpanj', 'Kolovoz', 'Rujan', 'Listopad', 'Studeni', 'Prosinac']
Dakle, varijabli mjeseci dodijelili smo listu u kojoj smo naveli 12
elemenata, a u ovom slućaju to su string objekti za svih 12 mjeseci u
godini.
Nakon što smo stvorili listu i definirali njezine elemente, iz liste
mozemo lako dobiti pojedini element ili ga po potrebi obrisati iz liste.
Slijedi obširniji primjer, koji napišimo u datoteci primjer13.py.
mjeseci = ['Sijecanj', 'Veljaca', 'Ozujak', 'Travanj', 'Svibanj',
'Lipanj', 'Srpanj', 'Kolovoz', 'Rujan', 'Listopad', 'Studeni', 'Prosinac']
print "Prvi mjesec u godini je:", mjeseci[0]
print "Zadnji mjesec u godini je:", mjeseci[11]
raw_input()
Dakle, u ovom primjeru iskoristili smo ranije definiranu listu, koju smo
pohranili u varijablu ime. Budući da smo htjeli na ekranu ispisati prvi
mjesec u godini, koji je naveden u prvom elementu liste, naredili smo
programu da nam vrati prvi element liste, na poziciji 0. To smo učinili
tako da smo naveli broj elementa liste unutar uglatih zagrada. Dakle:
mjeseci[0] vraća string "Sijecanj", budući da je string "Sijecanj" prvi
element liste dodijeljene varijabli mjeseci. Također smo naredili
programu da nam vrati i zadnji element liste, u ovom slućaju 11. Stoga,
mjeseci[11] nam je vratio string "Prosinac". Dakle, pravilna sintaksa za
pozivanje elemenata unutar liste je lista[broj elementa]
Ukoliko želimo pristupati elementima liste obrnutim putem, dakle od
zadnjeg ka prvom, možemo to učiniti upotrebom negativnih brojeva počevši
od -1. Dakle, ako želimo dobiti zadnji element liste, možemo napisati
ovako: mjeseci[-1], što će nam vratiti zadnji element, u našem slućaju
string "Prosinac". Zatim, napišemo li mjeseci[-2], vraća se string
predzadnjeg elementa u listi, "Studeni".
Također, iz liste možemo izdvojiti opseg elemenata, primjerice
mjeseci[0:2], što će vratiti prva dva elementa liste, "Sijećanj" i
"Veljača". Ili, ako želimo izdvojiti npr. sve elemente osim prvog,
napisat ćemo mjeseci[0:]. Ovdje znak dvotočke služi za odvajanje od-do
brojeva elemenata, dakle pravilna sintaksa je lista[početni broj
elementa:završni broj elementa].
Ako želimo izmijeniti sadržaj nekog elementa u listi, primjerice umjesto
Travanj staviti April, to možemo napraviti na sljedeći način:
mjeseci[3] = "April"
Tada se sadržaj četvrtog elementa liste mijenja, te sadrži string
"April" umjesto "Travanj".
Brisanje pojedinih elemenata iz liste postižemo pomoću del naredbe.
Primjerice, ako želimo izbrisati prvi element iz liste, dovoljno je napisati
del mjeseci[0]
i nakon toga element na drugoj poziciji automatski prelazi na prvu, što
znaći da će nam mjeseci[0] vratiti string "Veljaca", mjeseci[1] string
"Ozujak" itd.
Nadalje, na listama možemo obavljati i druge operacije, kao što su
umetanje elemenata, te proširenje ili dodavanje elemenata. O tome će
biti riječi u kasnijem poglavlju, gdje ćemo se više posvetiti
naprednijim operacijama za manipuliranje podacima u Python jeziku.

Tupleovi

Tupleovi se razlikuju od lista u tome što se sadržaj elemenata u njima
ne može kasnije više mijenjati. Dakle, što u tupleovima navedemo prvi
put, to ostaje tako do kraja programa. Prednost tupleova je ta što su
brži od lista u performansama, dakle praktičniji su kada je u pitanju
manipulacija s ogromnim količinama podataka. Za razliku od liste,
sadržaj tupleova navodimo unutar okruglih zagrada (), a elementi se
odvajaju također zarezima. Dakle, pretvorimo sada našu listu u tuple:
mjeseci = ('Sijecanj', 'Veljaca', 'Ozujak', 'Travanj', 'Svibanj',
'Lipanj', 'Srpanj', 'Kolovoz', 'Rujan', 'Listopad', 'Studeni', 'Prosinac')

Rječnici

Ovaj dio je još u izradi.

Reply all
Reply to author
Forward
0 new messages