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! :)