The Wayback Machine - http://web.archive.org/web/20021004121715/http://zweistein.averi.hr:80/scitech/python3.html
ova slika vam pokazuje gdje se trenuta�no nalazite
 
zweistein.web

home > scitech > python tutorial 3
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! :)