Python tutorial 3
> liste i FOR naredba
U pro�lom nastavku Python tutoriala nau�ili smo kondicionalno grananje i while programsku petlju. Danas �emo nau�iti liste i FOR programsku naredbu. Da bi nau�ili FOR programsku naredbu moramo znati liste, pa krenimo logi�nim redoslijedom...
Do sada smo upoznali varijable - jedan tip podataka. One mogu sadr�avati isklju�ivo jednu vrijednost:
ime = "Nikola"
Sada zamislite varijablu koja mo�e sadr�avati vi�e vrijednosti. Taj se tip podataka zove lista. Lista se uvijek okru�uje uglatim zagradama: [ i ]. Pogledajmo primjer jedne liste:
python = ["jednostavan", "objektno orjentiran", "lagan", "mocan"]
Ukoliko napi�emo
print python dobivamo ovo:
['jednostavan', 'objektno orjentiran', 'lagan', 'mocan']
Ukoliko trebamo samo prvi unos iz liste (u ovom slucaju "jednostavan"), koristimo zero-based indexing (iliti indeksiranje na bazi nule). Tako prvi unos ima indeks 0, drugi 1, tre�i 2, itd., tako da ako �elimo izdvojiti samo prvi unos iz liste, pi�emo ovo:
print python[0]
Broj u uglatim zagradama je indeks.
Python mo�e sadr�avati sve tipove varijabli u listi - i brojeve i stringove, pa �ak i druge liste:
miks = ["Nikola", 1234, ["jos", "jedna", "lista"], 3.1415]
Manipuliranje listama
Liste se mogu zdru�ivati sa + operatorom:
p2pprogs = ["kazaa lite", "kazaa", "winmx", "audiogalaxy"]
mp3sites = ["mp3.com", "listen4ever.com"]
music = p2pprogs + mp3sites
print music
�to proizvodi ovo:
['kazaa lite', 'kazaa', 'winmx', 'audiogalaxy', 'mp3.com', 'listen4ever.com']
Tako�er mo�ete uzimati i dijelove liste, npr. samo prva dva unosa u listu:
print music[0:2] # ispisuje unose sa indeksom 0 i 1
daje ovo:
['kazaa lite', 'kazaa']
Podaci u listama se mogu i mijenjati:
music[1] = "kazaa media desktop" # ovo je zapravo drugi unos u listi
Sada na�a lista izgleda ovako:
['kazaa lite', 'kazaa media desktop', 'winmx', 'audiogalaxy', 'mp3.com', 'listen4ever.com']
Ukoliko trebate provjeriti da li je neki unos u listi, dobro �e vam do�i naredbe "in" i "not in" koje vra�aju booleanski rezultat (true ili false - 0 ili 1):
print "kazaa lite" in music
daje:
1 (true), jer kazaa lite postoji u listi "music".
print "zweistein.web" not in music
daje:
1 (true) jer zweistein.web ne postoji u listi "music".
Ukoliko �elite dodati unos u listu, naredba append() �e vam pomo�i:
music.append("zweistein.web")
A lista izgleda ovako:
['kazaa lite', 'kazaa media desktop', 'winmx', 'audiogalaxy', 'mp3.com', 'listen4ever.com', 'zweistein.web']
Za brisanje se koristi naredba del() koja bri�e unos na osnovu indeksa:
del music[0]
Ovako izgleda lista nakon �to smo obrisali unos sa indeksom 0:
['kazaa media desktop', 'winmx', 'audiogalaxy', 'mp3.com', 'listen4ever.com', 'zweistein.web']
Tako�er mo�emo brisati po vrijednosti umjesto po indeksu:
music.remove("kazaa media desktop")
Ovako izgleda na�a lista nakon �to smo obrisali unos sa vrijedno��u "kazaa media desktop":
['winmx', 'audiogalaxy', 'mp3.com', 'listen4ever.com', 'zweistein.web']
Ukoliko �elite poredati listu po abecedi, koristiti �e vam naredbe sort() i reverse():
music.sort()
# rezultat: ['audiogalaxy', 'listen4ever.com', 'mp3.com', 'winmx', 'zweistein.web']
music.reverse()
# rezultat: ['zweistein.web', 'winmx', 'mp3.com', 'listen4ever.com', 'audiogalaxy']
for loop
For loop nam slu�i da bi izveli neku naredbu na svakoj vrijednosti u nekom tipu podataka (varijabli, listi...).
Sintaksa je:
for privremena_varijabla in tip_podataka:
naredba
Pogledajmo jedan primjer i sve bi trebalo biti malo jasnije:
music = ['winmx', 'audiogalaxy', 'mp3.com', 'listen4ever.com', 'zweistein.web']
for website in music:
print "ja koristim", website, "da bi saznao stvari o glazbi"
�to daje sljede�i ispis:
ja koristim winmx da bi saznao stvari o glazbi
ja koristim audiogalaxy da bi saznao stvari o glazbi
ja koristim mp3.com da bi saznao stvari o glazbi
ja koristim listen4ever.com da bi saznao stvari o glazbi
ja koristim zweistein.web da bi saznao stvari o glazbi
For loop mo�ete koristiti i na stringu:
string = "python tutorial"
for slovo in string:
print slovo
Ovo daje sljede�i ispis:
p
y
t
h
o
n
t
u
t
o
r
i
a
l
Zanimljiv efekat, ne? :)
Jo� malo o print naredbi
Ako ste pozorno pratili tutorial, mogli ste vidjeti ne�to �to je prili�no samoobja�njavaju�e, ali �to ipak do sada nismo objasnili. To je ova linija:
print "ja koristim", website, "da bi saznao stvari o glazbi"
Prvo imamo print naredbu za koju znamo �to radi. Nakon toga print naredba ispisuje string "ja koristim". Tu stane i tra�i vrijednost varijable "website" i ume�e je na to mjesto (uz razmake na po�etku i na kraju - tako da se oko toga ne trebate brinuti), i onda opet nastavlja ispis stringa "da bi saznao stvari o glazbi". Ovo je vrlo korisno jer se u drugim programskim jezicima mora pribjegavati druga�ijim i mnogo kompliciranijim rje�enjima.
Jo� malo o stringovima
Isto kao �to liste posjeduju indekse, indekse posjeduju i stringovi. Razlika izme�u stringova i lista jest da se liste mogu mijenjati preko indeksa, a stringovi ne.
Pogledajmo ovaj primjer:
string = "python"
print string[0:2]
Daje:
py - prva dva slova stringa... Mnogo bolje nego QBasicov
LEFT$(a,b) i sli�no. Tako�er mo�emo uzimati vrijednosti i s kraja (ovo vrijedi i za stringove i za liste) sa predznakom -:
string = "python"
print string[-1]
Daje:
n, zadnje slovo stringa.
Komentirajte!
Da li vam se svidio tutorial? Ili nije? Mo�da imate neko pitanje, ili ste na�li neku gre�ku? Sve komentare mo�ete ostaviti na
zweistein.forumu ili meni direktno na
mail.
Kraj
U�ivajte u novom znanju i - iskoristite ga. Sad po�inje �kola i, iskreno, ne znam kada �u sti�i napisati sljede�i Python tutorial. Vjerovatno �e on nastati na nekom od satova informatike ;), ali ne mogu to�no re�i kada. U njemu bi trebali obraditi dva nova tipa podataka - tuple i dictionary (rije�nik), koji su dosta zanimljivi i korisni.
Do tada, programirajte! :)