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.

38 Programsko upravljanjeMetoda items() vra¢a popis parova klju£/vrijednost, pa stoga for petlja koristi dva identikatorau cilju da se svaki £lan razpakira u par klju£/vrijednost. Ako iterator sadrºi promjenljiv objekt unutarsamoga sebe, onda se taj objekt ne smije mijenjati dok se for petlja obavlja. Na primjer, predhodniprimjer ne moºe koristiti iteritems() umjesto items. Naime, iteritems() vra¢a iterator £iji jesadrºani objekt d, pa tijelo petlje ne moºe mijenjati d (sa del d[key]). S druge strane, items() vra¢alistu, tako da d nije sadrºani objekt, pa tijelo petlje moºe mijenjati d.Upravlja£ka varijabla moºe se repovezati u tijelu petlje, ali se ponovno repovezuje na slijede¢i £lanu iteratoru sa sljede¢om iteracijom petlje. Tijelo petlje uop¢e se ne izvr²ava ako iterator ne oslobažanikakve £lanove. U tom slu£aju, upravlja£ka varijabla se ne povezuje ili odvezuje na niti jedan na£inpomo¢u naredbe for. Mežutim, ako iterator oslobaža barem jedan £lan, kad se naredba petlje zavr²i,upravlja£ka varijabla ostaje povezana na posljednju vrijednost na koju ju je naredba petlje povezala.Zato je sljede¢i kôd ispravan, dok god neki-niz nije prazan.for x in neki-niz:obradi(x)print "Posljednji obradjeni £lan je: ",x4.4 IteratoriMetode items(), keys() i values() vra¢aju njihove rezultantne liste bilo kojim redoslijedom. Akose pozove vi²e od jedne od ovih metoda bez bilo kakve izmjene na rje£niku, redoslijed rezultata jeidenti£an za sve. Metode iteritems(), iterkeys()i itervalues(), koje su uvedene u <strong>Python</strong>u odina£ice 2.2, vra¢aju iteratore ekvivalentne tim listama. Iterator zauzima manje memorije od liste, alinije dozvoljena promjena rje£nika dok se iterira na jednom od njegovih iteratora. Iteriranje na listivra¢enoj sa items(), keys() ili values() dolazi bez takvih restrikcija. Iteriranje direktno na rje£nikuD je isto kao iteriranje na D.iterkeys().MetodaD.iteritems( )D.iterkeys( )D.itervalues( )Tablica 4.1: Metode rje£ni£kog objektaOpisVra¢a iterator za sve £lanove (key/valueparove) u DVra¢a iterator za sve klju£eve u DVra¢a iterator za sve vrijednosti u DIterator je bilo koji objekt i takav da se moºe pozivati sa i.next() bez argumenata. Naredbai.next() vra¢a sljede¢i £lan iteratora i ili, kada iterator i vi²e nema £lanova, podiºe StopIterationiznimku. Ve¢ina je iteratora izgražena eksplicitnim ili implicitnim pozivima ugražene funkcije iter.Naredba for implicitno poziva iter da bi dobila iterator. Sljede¢a naredba:for x in clanovi:naredba(e)je ekvivalentna s:_temporary_iterator = iter(clanovi)while True:try: x = _temporary_iterator.next ( )except StopIteration: breaknaredba(e)

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

Saved successfully!

Ooh no, something went wrong!