Използвайте функцията Enumerate в Python за създаване на цикли с броячи

Use Enumerate Function Python Create Loops With Counters



Тази статия ще обясни използването на функцията за изброяване, налична в стандартната библиотека на модули на Python. Функцията Enumerate ви позволява да присвоите индекс или брой на елементи във всеки обект, който може да се итерира. След това можете да приложите допълнителна логика върху тях, тъй като ще имате достъп до двете стойности и броене, картографирано към нея.

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

Ако сте използвали цикъл for в други езици за програмиране, особено език C и други езици със синтаксис в стил C, може да сте посочили начален индекс в цикъла. За справка, ето как изглежда цикълът for в C и други езици със сходен синтаксис:







за (inti= 0;i< 10;i++)

{

printf ('%дн',i);

}

Инструкцията за цикъл инициализира променлива със стойност нула, проверява дали е по -малка от праг и я увеличава с един брой след оценка на логиката вътре в цикъла (ако е изпълнено условието за спиране). По този начин можете да използвате индекс и да го присвоите на всички обекти, посочени във вашия цикъл. За сравнение, ето как цикълът for със същия резултат изглежда в Python:



заiв диапазон(0, 10):

печат (i)

Функцията range в Python ви позволява да зададете последователност от диапазони от числа, която има стъпка по подразбиране 1. Можете да промените стойността на стъпката, като предоставите трети аргумент. Вторият аргумент във функцията range се използва за задаване на прага за условие на стоп. И двете кодови проби произвеждат следния изход:



0

1

2

3

4

5

6

7

8

9

Тези цикли работят добре, ако просто искате да генерирате някаква последователност от числа и да ги свържете с някаква логика вътре в цикъла. Възможно е обаче да се наложи да използвате друг вложен цикъл или да използвате функцията на доходност за всеки итерируем тип, за да им присвоите някакъв проследяващ се брой. Методът за изброяване улеснява присвояването на индекси на повторяеми в един израз, като по този начин елиминира необходимостта от стартиране на множество вложени цикли. Разгледайте този пример на кода:





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

изброени_номери= изброени(числа)

заиндекс,вещвизброени_номери:

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

Първият израз дефинира нова променлива, наречена числа, и й присвоява итерируем (тип списък). Второто изявление показва използването на функцията за изброяване, когато предоставяте итерация към нея като задължителен аргумент. Третият израз преобразува променливата enumerated_numbers в обект от тип списък. По подразбиране функцията за изброяване генерира обект от тип изброяване, а не тип за повторение, така че трябва да го преобразувате. След като стартирате кода, споменат по -горе, трябва да получите следния изход:

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

Функцията за изброяване присвоява броя на всеки елемент в итерируем тип и създава кортежи със сдвоени стойности. По подразбиране броенето започва от нула.



Сега, след като сте присвоили номер на всеки елемент в итерируем тип, можете лесно да го преместите без да пишете вложени изявления:

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

изброени_номери= изброени(числа)

заиндекс,вещвизброени_номери:

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

Примерът на кода, посочен по -горе, ще даде следния изход:

0 нула

1 един

2 две

3 три

4 четири

5 пет

Можете да направите кода по -кратък, като използвате вградена функция за изброяване, както е показано в примерната по -долу:

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

заиндекс,вещв изброени(числа):

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

Използване на изброяване с различен начален индекс

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

числа= ['един', 'две', 'три', 'четири', 'пет']

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

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

Във второто изявление start = 1 аргумент се използва за промяна на началната точка. След като стартирате кода, посочен по -горе, трябва да получите следния изход:

1 един

2 две

3 три

4 четири

5 пет

Присвояване на индекс със стъпки

В първия раздел на тази статия е показан синтаксисът за for цикъл на език C, където можете да дефинирате стъпки между всеки следващ брой или индекс. Функцията за изброяване в Python няма такъв аргумент, така че не можете да посочите стъпка между броя. Наистина можете да напишете своя собствена логика за изпълнение на стъпки вътре в изброения за цикъл блок. Съществува обаче начин за прилагане на персонализирани стъпки чрез писане на минимален код. Следващият пример показва изпълнението на стъпки, използващи zip и range функции:

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

заиндекс,вещв цип(диапазон(0, 7, 2),числа):

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

Функцията zip ви позволява да създавате двойки, като вземете елементи със същия индекс от две или повече итерации. Така че функцията zip тук взема елемент от функцията за повторение, върната от диапазона (0, 7, 2) и друг елемент от списъка с числа и след това ги сдвоява в кортеж. Крайният резултат е идентично изпълнение на функцията за изброяване, но с персонализирани стъпки, посочени като трети аргумент във функцията range (0, 7, 2) (2 в този случай). След като стартирате кода, посочен по -горе, трябва да получите следния изход:

0 нула

2 две

4 четири

6 шест

Заключение

Функцията за изброяване в Python ви позволява да пишете кратък код, като присвоите числова последователност на елементи в итерируем обект. Това е наистина полезно, ако искате да следите индекса на елементите в итерируем тип. Ако искате да изброявате итерируеми типове с персонализирани стъпки, използвайте функцията zip, обяснена в последния пример.