Как работает функция enumerate() в Python?

В данной статье мы бы хотели разобрать, как работает функция enumerate() в Python. Сначала мы рассмотрим её синтаксис и принцип работы, а дальше потренируемся на примерах, чтобы научиться использовать данную функцию на практике.

Итак, функция enumerate() в Python принимает некий набор данных в качестве параметра и возвращает объект enumerate.

Этот объект возвращается в формате пар ключ-значение, где ключи — это соответствующие индексы элементов, а значения — сами элементы из переданного набора данных.

Но давайте сперва поговорим о синтаксисе и параметрах функции enumerate().

Синтаксис функции enumerate() в Python

Синтаксис функции enumerate() выглядит следующим образом:

enumerate(iterable, start)

Функция enumerate() принимает два параметра: iterable и start.

  • iterable — это итерируемый объект (список, кортеж и т.д.), который будет возвращен в виде пронумерованного объекта (объекта enumerate)
  • start — это начальный индекс для возвращаемого объекта enumerate. Значение по умолчанию равно 0, поэтому, если вы опустите этот параметр, в качестве первого индекса будет использоваться 0.

Как использовать функцию enumerate() в Python

В этом разделе мы рассмотрим несколько примеров, которые помогут нам понять синтаксис и параметры, разобранные в предыдущем разделе.

Обратите внимание, что при использовании enumerate() нужно указывать тип данных, в котором будет храниться наш объект enumerate при возврате (это может быть список, множество и т.д.). Вы лучше поймете это, когда мы рассмотрим примеры.

Пример №1: функция enumerate() с одним параметром

names = ["John", "Jane", "Doe"]
enumNames = enumerate(names)

print(list(enumNames))
# [(0, 'John'), (1, 'Jane'), (2, 'Doe')]

В приведенном выше примере мы создали список, состоящий из трех имен.

Затем мы преобразовали переменную names в объект enumerate и сохранили результат в переменной с именем enumNames.

Далее мы захотели, чтобы наш объект был выведен в виде списка, поэтому мы сделали следующее: list(enumNames).

При выводе на консоль результат будет выглядеть так: [(0, 'John'), (1, 'Jane'), (2, 'Doe')].

Как видите, результат мы получили в виде пар ключ-значение. Первый индекс — 0, он связан с первым элементом в нашем списке имен names, второй — 1, связан со вторым элементом в списке names и так далее.

Обратим внимание, что в нашем примере мы использовали только первый параметр функции enumerate().

В следующем примере мы используем оба параметра, чтобы вы увидели разницу.

Пример №2: функция enumerate() с указанием начального индекса

names = ["John", "Jane", "Doe"]
enumNames = enumerate(names, 10)

print(list(enumNames))
# [(10, 'John'), (11, 'Jane'), (12, 'Doe')]

Здесь мы добавили второй параметр в функцию enumerate(), написав enumerate(names, 10).

Значение второго параметра, 10, будет начальным индексом для ключей (индексов) в объекте enumerate.

Результат будет таким: [(10, 'John'), (11, 'Jane'), (12, 'Doe')].

Мы видим, что первый индекс равен 10, второй 11 и так далее. Таким образом, с помощью второго аргумента start мы можем установить любой начальный индекс для наших элементов.

Как перебрать результат функции enumerate() в Python

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

names = ["John", "Jane", "Doe"]
enumNames = enumerate(names)

for item in enumNames:
    print(item)
    
# (0, 'John')
# (1, 'Jane')
# (2, 'Doe')

Используя цикл for, мы прошлись по нашему объекту с помощью следующей команды: for item in enumNames. Подробнее про тонкости использования цикла for можете узнать в статье «Цикл for в Python: тонкости написания».

На выходе мы получили элементы исходного объекта, выведенные в формате пар ключ-значение.

Заключение

Итак, в этой статье мы поговорили о том, как работает функция enumerate() в Python. Мы начали с рассмотрения синтаксиса и параметров этой функции, затем разобрали несколько примеров ее использования.

Наконец, мы увидели, как можно перебирать вывод функции enumerate() с помощью цикла for.

Надеемся, данная статья была вам полезна! Успехов в написании кода!

Перевод статьи «Python enumerate() – What is the Enumerate Function in Python?».