Питхон подржава многе итерабилне објекте: листе, тупле и стрингови су само неки. Питхон фор петља је довољно флексибилна да са лакоћом рукује овим објектима. Конкретно, штеди вас да сами радите са нумеричким индексом сваког уноса.
Али понекад ћете желети да радите са индексом, да бисте, на пример, бројали или филтрирали ставке у колекцији. Научите како можете да користите Питхон функцију набрајања за понављање низа док истовремено пратите и индекс и елемент.
Итерација без енумерате()
Размотрите следећу Питхон листу.
ми_фруитс = ["јабуке", "крушке", "банане"]
Претпоставимо да желите да пратите број сваког елемента на листи. Ти би могао користите фор петљу са домет() функционишу овако.
цоунт = 0
за воће ин опсег (лен (моје_воће)):
штампа (број, моје_воће[број])
цоунт += 1
Иако ово функционише, има неколико недостатака:
- Морате да пратите бројање изван петље.
- Морате повећати број у свакој итерацији.
- Морате израчунати дужину петље.
- опсег (лен()) ради само са објектима који се могу пребројати и индексирати.
Постоји боље решење: функција енумерате().
Како енумерате() функционише у Питхон-у
Питхон набрајати() функција узима колекцију података и враћа објекат за набрајање. Објекат енумерате садржи бројач као кључ за сваку ставку коју објекат садржи. Тхе набрајати() функција то чини тако што свакој ставци додељује број. Овај број одговара броју итерација које је функција завршила да би достигла ту вредност.
Овај бројач олакшава приступ ставкама у колекцији или чак мутира колекцију где је то могуће.
Витх набрајати(), не морате да пратите дужину петље или број понављања. Такође можете да избегнете експлицитни приступ вредности помоћу оператора индекса, нпр воће[број]. Функција енумерате аутоматски обрађује све ове функције.
Синтакса Питхон-а енумерате()
Испод је општа синтакса за функцију енумерате().
набрајати (итерабле, старт=0)
енумерате() узима два аргумента:
- итерабле: збирка података или секвенца преко које Питхон може итерирати. На пример. листу или торку.
- старт: индекс од којег функција енумерате треба да почне да броји.
Како се имплементира енумерате().
Да разумем како набрајати() ради, да видимо како се заправо имплементира.
дефнабрајати(секвенца, почетак=0):
н = почетак
за елем ин низ:
принос н, елем
н += 1
Ова функција коју можете пронаћи у Документација за Питхон набрајање, узима секвенцу и почетни аргумент који је подразумевано постављен на 0.
Функција затим иницијализује променљиву н у почетну променљиву. Ово води евиденцију о броју итерација.
У фор петљи која следи за сваки елемент у низу,
- принос паузира извршавање петље.
- Такође враћа тренутни број (н) и вредност (елем).
- Када се петља настави, повећава се н.
Повратна вредност је објекат парова кључ/вредност.
Ако бисте позвали набрајати() функцију и проследите јој листу воћа, ово би била излазна вредност.
ми_фруитс = ["јабуке", "крушке", "банане"]
енумерате_објецт = набрајати (моје_воће)
штампа (лист (енумерате_објецт))
# излаз - [(0, 'јабуке'), (1, 'крушке'), (2, 'банане')]
Набројати са другачијим почетним индексом
У горњем примеру нисмо навели почетни индекс. Пример испод показује како можете да поставите почетни индекс на број по вашем избору.
Да бисте почели у 10, урадите следеће.
енумерате_објецт = енумерате (моје_воће, 10)
штампа (лист (енумерате_објецт))
# излаз - [(10, 'јабуке'), (11, 'крушке'), (12, 'банане')]
Питхон енумерате() Примери
Ево неколико примера који показују како можете да користите набрајати() у Питхон-у.
Наброји Питхон стринг
У овом примеру ћете користити енумерате да бисте преузели писмо на индексу 5:
ми_стринг = "макеусеоф"
за број, вредност ин наброји (мој_стринг):
ако цоунт == 5:
принт (вредност)
# излаз - с
Наброји Питхон тупле
Такође можете користити набрајати() поновити преко а Питхон тупле. У овом примеру, програм штампа заглавље у првој итерацији, пре него што прикаже ставке.
ми_фруитс_тупле = ("јабуке", "крушке", "банане")
за индекс, вредност ин наброји (моје_воће_торке):
ако (индекс == 0):
принт("Воће:")штампа (вредност)
/*
воће:
јабуке
крушке
банане
*/
Набројите Питхон листу
У примеру испод, користите енумерате да смањите све бројеве на листи изнад 10 за 2.
ми_нумбер_лист = [10, 17, 15, 6]
за индекс, вредност ин енумерате (моја_лист_бројева):
ако (вредност > 10):
мој_број_лист[индекс] -= 2штампа (моја_листа_бројева)
# излаз - [10, 15, 13, 6]
Користите енумерате да бисте пребројали своје итерабле
Питхон укључује набрајати() као уграђена функција. Можете га користити за понављање и бројање ставки у колекцији која се може понављати као што су листа, тупле или стринг. Може вам помоћи да пратите прави индекс сваког елемента, али такође можете одредити свој почетни индекс. Користите га као алтернативу за домет() ако радите са објектима који нису пребројиви и објекти који се могу индексирати.