12.07.2015 Views

Python

Python

Python

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

4.5. Funkcije range i xrange 39Ako iter(clanovi) vra¢a iterator i tako da naredba i.next nikada ne podigne StopIterationiznimku(beskona£an iterator), petlja for x in clanovi: nikada ne zavr²ava (osim kad naredbe u tijelu petljesadrºavaju prikladne break ili return naredbe ili iznimke). iter(clanovi) poziva posebnu metoduc._iter_() da se dobije i vrati iterator na clanovi.Zahvaljuju¢i iteratorima, naredba for se moºe koristiti na spremniku (kontejneru) koji nije nizznakova, poput rje£nika, sve dok god je kontejner iterabilan (tj. denira _iter_ posebnu metodu takoda funkcija iter moºe prihvatiti kontejner kao argument i vratiti iterator na taj kontejner). Ugraženefunkcije koje su prije zahtjevale argumentni niz sad prihva¢aju bilo koji iterabilni objekt.4.5 Funkcije range i xrangeVrlo £est slu£aj u programiranju je ponavljanje petlje preko niza cijelih brojeva. Za tu svrhu <strong>Python</strong>pruºa ugražene funkcije range i xrange koje generiraju i vra¢aju nizove cjelih brojeva.Najjednostavniji na£in da se zavrti petlja od n puta u <strong>Python</strong>u je:for i in xrange(n):naredba(e)range(x) vra¢a popis ili listu £iji £lanovi su sljedni cijeli brojevi od 0 (uklju£eno) do x (isklju£eno).Funkcija range(x,y) vra¢a popis £iji £lanovi su su sljedni cijeli brojevi od x (uklju£eno) do y (isklju-£eno). Ako je x ve¢i ili jednak y, onda je rezultat prazna lista. Funkcija range(x,y,step) vra¢a popiscijelih brojeva od x (uklju£eno) do y (isklju£eno), tako da je razlika izmežu svaka dva susjedna £lana upopisu step. Ako je korak(eng. step) manji od 0, range odbrojava od x do y. Funkcija range vra¢aprazan popis kada je x ve¢i ili jednak y, a korak je ve¢i od 0, ili kada je x manji ili jednak y i korak jemanji od 0. Ako je korak jednak 0, onda range podiºe iznimku. Dok range vra¢a standardni objektliste koja se moºe koristiti za bilo koju svrhu, xrange vra¢a objekt za posebne svrhe, posebno namijenjenkori²tenju u iteracijama kao naredba for pokazana ranije. Xrange uzima manje memorije odrange-a za ovu speci£nu namjenu. Stavljaju¢i na stranu potro²nju memorije, range se moºe koristitiu iste svrhe kao i xrange.4.6 Saºete listeƒesta svrha for petlje je provjeravanje svakog £lana unutar niza i tvorba nove liste dodaju¢i rezultateizraza izra£unatog na jednom ili svim £lanovima koji se provjeravaju. Oblik izraza, zvan saºeta lista(eng. list comprehension) omogu¢uje to£no i neposredno izvr²avanje ove zada¢e. Kako je saºeta listaizraz (a ne blok naredbi), moºe se ga koristiti izravno (npr. kao stvarni argument u funkciji poziva,zatim u naredbi return ili kao podizraz za neki drugi izraz). Saºeta lista ima sljede¢u sintaksu:[izraz for cilj in iter-clanovi lc-odlomci]gdje su cilj i iter-clanovi identi£ni kao i u obi£noj for naredbi. Izraz se moºe ograditi i okruglim,oblim zagradama, pa ¢e u tom slu£aju predstavljati n-terac, a ne listu. lc-odlomci je niz od nula ilivi²e odlomaka, od kojih je svaki sli£an obliku:for cilj in iter-clanoviif izrazIzraz unutar svake if klauzule ima istu sintaksu kao izraz u obi£noj if naredbi.Saºeta lista je ekvivalentna petlji for koja gradi istu listu ponavljaju¢im pozivima append metoderezultantne liste. Na primjer:result1 = [x+1 for x in neki_niz]jednak je kao sljede¢a for petlja:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!