Користите функцију пребројавања у Питхону за креирање петљи са бројачима

Use Enumerate Function Python Create Loops With Counters



Овај чланак ће објаснити употребу функције набрајања доступне у стандардној библиотеци модула Питхон -а. Енумерате функција вам омогућава да доделите индекс или број елементима у било ком итерабилном објекту. Затим можете да примените додатну логику на њих јер ћете имати приступ обема вредностима и број који је мапиран на њу.

Синтакса и основни пример

Ако сте користили фор петљу у другим програмским језицима, посебно језику Ц и другим језицима који имају синтаксу у стилу Ц, можда сте навели почетни индекс у петљи. За референцу, ево како фор петља изгледа у Ц и другим језицима који имају сличну синтаксу:







за (инти= 0;и< 10;и++)

{

принтф ('%д н',и);

}

Наредба петље иницијализује променљиву која има вредност нула, проверава да ли је мања од прага и повећава је за један број након процене логике унутар блока петље (ако је испуњен услов заустављања). На овај начин можете користити индекс и доделити га било којим објектима наведеним у вашем блоку петље. За поређење, ево како фор петља са истим резултатом изгледа у Питхону:



заиу домет(0, 10):

принт (и)

Функција опсега у Питхону вам омогућава да наведете низ опсега бројева који има подразумевани корак 1. Вредност корака можете променити навођењем трећег аргумента. Други аргумент у распону функције користи се за постављање прага за услов заустављања. Оба узорка кода производе следеће резултате:



0

1

2

3

4

5

6

7

8

9

Ове петље добро функционишу ако само желите да генеришете неки низ бројева и повежете их са неком логиком унутар наредбе петље. Међутим, можда ћете морати да користите другу угнежђену петљу или функцију приноса за било који тип који се може поновити да бисте им доделили неку врсту броја који се може пратити. Метода енумерате олакшава додељивање индекса итерабилима у једној наредби, чиме се елиминише потреба за покретањем више угнежђених петљи. Погледајте овај узорак кода:





бројеви= ['нула', 'један', 'два', 'три', 'четири', 'пет']

енумератед_нумберс= наведен(бројеви)

заиндекс,ставкауенумератед_нумберс:

принт (индекс,ставка)

Прва наредба дефинише нову променљиву која се зове бројеви и додељује јој итерабилну (тип листе). Друга наредба приказује употребу функције енумерате где јој достављате итерабилну као обавезан аргумент. Трећи израз претвара променљиву енумератед_нумберс у објекат типа листе. Подразумевано, функција енумерате генерише објекат типа енумерате, а не итерабилни тип, па га морате претворити. Након покретања горе наведеног узорка кода, требало би да добијете следећи излаз:

[(0, 'нула'), (1, 'један'), (2, 'два'), (3, 'три'), (4, 'четири'), (5, 'пет')]

Функција енумерате додељује одбројавање сваком елементу у итерабилном типу и креира торке са упареним вредностима. Подразумевано, одбројавање почиње од нуле.



Сада када сте сваком елементу доделили број у итерабилном типу, можете лако да га пребаците без писања угнежђених исказа:

бројеви= ['нула', 'један', 'два', 'три', 'четири', 'пет']

енумератед_нумберс= наведен(бројеви)

заиндекс,ставкауенумератед_нумберс:

принт (индекс,ставка)

Горе наведени узорак кода ће произвести следеће резултате:

0 нула

1 један

2 два

3 три

4 четири

5 пет

Код можете скратити коришћењем функције енумерате инлине, као што је приказано у доњем примеру:

бројеви= ['нула', 'један', 'два', 'три', 'четири', 'пет']

заиндекс,ставкау наведен(бројеви):

принт (индекс,ставка)

Коришћење набрајања са различитим почетним индексом

Функција енумерате узима опционални аргумент у којем можете навести почетни индекс. Подразумевано је нула, али можете је променити помоћу стартног аргумента:

бројеви= ['један', 'два', 'три', 'четири', 'пет']

заиндекс,ставкау наведен(бројеви,почетак=1):

принт (индекс,ставка)

У другом исказу, старт = 1 аргумент се користи за промену почетне тачке. Након покретања горе наведеног узорка кода, требало би да добијете следећи излаз:

1 један

2 два

3 три

4 четири

5 пет

Додела индекса са корацима

У првом одељку овог чланка приказана је синтакса фор петље на језику Ц где можете дефинисати кораке између сваког следећег броја или индекса. Функција енумерате у Питхону нема доступне такве аргументе па не можете навести корак између бројања. Заиста можете написати своју логику за имплементацију корака унутар набројаног блока петље. Међутим, постоји начин да се имплементирају прилагођени кораци писањем минималног кода. Следећи пример приказује имплементацију корака помоћу функција зип и ранге:

бројеви= ['нула', 'два', 'четири', 'шест']

заиндекс,ставкау зип(домет(0, 7, 2),бројеви):

принт (индекс,ставка)

Зип функција вам омогућава да креирате парове тако што ћете покупити елементе са истим индексом из два или више итерабела. Дакле, функција зип овде покупи елемент из итерабилне функције враћене из опсега (0, 7, 2) и други елемент са листе бројева, а затим их обоје упари у тупле. Крајњи резултат је идентична имплементација функције енумерате, али са прилагођеним корацима наведеним као трећи аргумент у распону (0, 7, 2) функције (2 у овом случају). Након покретања горе наведеног узорка кода, требало би да добијете следећи излаз:

0 нула

2 два

4 четири

6 шест

Закључак

Функција енумерате у Питхону вам омогућава да пишете сажети код додељивањем нумеричке секвенце елементима у итерабилном објекту. Ово је заиста корисно ако желите да пратите индекс ставки унутар итерабилног типа. Ако желите да набрајате итерабилне типове са прилагођеним корацима, користите зип функцију објашњену у последњем примеру.