Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.2
Używajenumerate()zamiastprzechodzićwpętlipoindeksie
7
process(i,items[i]);
}
BardzozbliżonaopcjajestdostępnawPythonie,awniecoodległejprzeszłościPytho-
natakiepodejściebyłostandardowodostępnymmechanizmem:
foriinrange(len(items)):
process(i,items[i])
Rzeczywiście,jeśliniemusimywykorzystywaćpozycjiindeksuwewnątrzpętli,ja-
kiekolwiekjegowykorzystywaniejestzwyklewPythoniezapachemkodu.Owiele
bardziejidiomatycznąopcjąjestpoprostu:
foriteminitems:
process(None,item)
Wtychdosyćczęstychsytuacjach,gdypotrzebnynamjestzarównoindeks,jakiznaj-
dującysiępodnimelement,użyciefunkcjienumerate()będzieznaczniebardziej
ekspresyjneiidiomatyczne:
fori,iteminenumerate(items):
process(i,item)
Wstosunkoworzadkichsytuacjach,kiedypotrzebujęindeksu,aleniesamegoele-
mentu,częstoitakużywamfunkcji
enumerate()
,wykorzystującprzytymkonwencję
Pythona-(pojedynczepodkreślenie),którareprezentujenpewnąwartość,naktórej
miniezależy”:
fori,-inenumerate(items):
process(i,None)
Podejście,któregoużywamodczasudoczasu,kiedychcęutrzymywaćkilkawartości
przyrostowych,poleganazainicjalizowaniutychkilkulicznikówprzedpętlą,nawet
jeślijedenznichmógłpochodzićzenumerate():
total,n-foo,n-bar:0,0,0
foriteminitems:
ifis-foo(item):
process-foo(item)
n-foo+:1
elifis-bar(item):
process-bar(item)
n-bar+:1
else:
pass
total+:1