Используйте функцию перечисления в Python для создания циклов со счетчиками

Use Enumerate Function Python Create Loops With Counters



В этой статье объясняется использование функции перечисления, доступной в стандартной библиотеке модулей Python. Функция Enumerate позволяет вам назначать индекс или счетчик элементам в любом итерируемом объекте. Затем вы можете реализовать для них дополнительную логику, поскольку у вас будет доступ как к значениям, так и к сопоставленному с ними счетчику.

Синтаксис и базовый пример

Если вы использовали цикл for в других языках программирования, особенно в языке C и других языках, имеющих синтаксис стиля C, вы могли указать начальный индекс в цикле. Для справки, вот как выглядит цикл for на C и других языках с аналогичным синтаксисом:







для (intязнак равно 0;я< 10;я++)

{

printf ('% d п',я);

}

Оператор цикла инициализирует переменную, имеющую нулевое значение, проверяет, что оно меньше порогового значения, и увеличивает его на один счет после оценки логики внутри блока цикла (если выполняется условие остановки). Таким образом, вы можете использовать индекс и назначать его любым объектам, указанным в вашем блоке цикла. Для сравнения, вот как выглядит цикл for с таким же результатом в Python:



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

Распечатать (я)

Функция диапазона в Python позволяет вам указать последовательность диапазонов номеров, которая имеет шаг по умолчанию 1. Вы можете изменить значение шага, указав третий аргумент. Второй аргумент в функции диапазона используется для установки порога для условия остановки. Оба образца кода дают следующий результат:



0

1

2

3

4

5

6

7

8

9

Эти циклы работают нормально, если вы просто хотите сгенерировать некоторую числовую последовательность и связать их с некоторой логикой внутри оператора цикла. Однако вам, возможно, придется использовать другой вложенный цикл или функцию yield для любого итеративного типа, чтобы присвоить им какое-то отслеживаемое количество. Метод enumerate упрощает присвоение индексов итерациям в одном операторе, тем самым устраняя необходимость в запуске нескольких вложенных циклов. Взгляните на этот пример кода:





числазнак равно ['нуль', 'один', 'два', 'три', 'четыре', 'пять']

enumerated_numbersзнак равно перечисленные(числа)

дляпоказатель,элементвenumerated_numbers:

Распечатать (показатель,элемент)

Первый оператор определяет новую переменную с именем numbers и назначает ей итеративный (тип списка). Второй оператор показывает использование функции перечисления, в которой вы предоставляете ей итерацию в качестве обязательного аргумента. Третий оператор преобразует переменную enumerated_numbers в объект типа списка. По умолчанию функция перечисления генерирует объект перечислимого типа, а не итеративный тип, поэтому вам необходимо преобразовать его. После выполнения примера кода, упомянутого выше, вы должны получить следующий результат:

[(0, 'ноль'), (1, 'один'), (2, 'два'), (3, 'три'), (4, 'четыре'), (5, 'пять')]

Функция enumerate присваивает счет каждому элементу итеративного типа и создает кортежи, имеющие парные значения. По умолчанию счет начинается с нуля.



Теперь, когда вы присвоили номер каждому элементу итеративного типа, вы можете легко перебрать его без написания вложенных операторов:

числазнак равно ['нуль', 'один', 'два', 'три', 'четыре', 'пять']

enumerated_numbersзнак равно перечисленные(числа)

дляпоказатель,элементвenumerated_numbers:

Распечатать (показатель,элемент)

В приведенном выше примере кода будет получен следующий результат:

0 ноль

1 один

2 два

3 три

4 четыре

5 пять

Вы можете сделать код короче, используя встроенную функцию перечисления, как показано в примере ниже:

числазнак равно ['нуль', 'один', 'два', 'три', 'четыре', 'пять']

дляпоказатель,элементв перечисленные(числа):

Распечатать (показатель,элемент)

Использование Enumerate с другим начальным индексом

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

числазнак равно ['один', 'два', 'три', 'четыре', 'пять']

дляпоказатель,элементв перечисленные(числа,Начнитезнак равно1):

Распечатать (показатель,элемент)

Во втором операторе аргумент start = 1 используется для изменения начальной точки. После выполнения указанного выше примера кода вы должны получить следующий результат:

1 один

2 два

3 три

4 четыре

5 пять

Назначение индекса с шагами

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

числазнак равно ['нуль', 'два', 'четыре', 'шесть']

дляпоказатель,элементв застегивать(диапазон(0, 7, 2),числа):

Распечатать (показатель,элемент)

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

0 ноль

2 два

4 четыре

6 шесть

Заключение

Функция enumerate в Python позволяет писать краткий код, присваивая числовую последовательность элементам в итеративном объекте. Это действительно полезно, если вы хотите отслеживать индекс элементов внутри итеративного типа. Если вы хотите перечислить итерационные типы с помощью настраиваемых шагов, используйте функцию zip, описанную в последнем примере.