Короткий ответ
enumerate() — встроенная функция Python, которая при обходе коллекции добавляет каждому элементу индекс и возвращает пары «индекс — элемент». Нумерация по умолчанию начинается с нуля, а вторым аргументом можно задать стартовое значение.
Как это работает подробнее
Функция возвращает специальный объект-перечисление (enumerate object), который можно использовать прямо в цикле for или преобразовать в список пар через list().
- Встроенный счётчик.
enumerate()избавляет от отдельной переменной-счётчика и ручного инкремента, поэтому исчезает целый класс ошибок. - Пары индекс — элемент. При обходе распаковываются кортежи: первый элемент — номер, второй — значение из коллекции.
- Стартовое значение. Второй аргумент задаёт начало нумерации:
enumerate(months, 1)выведет номера, начиная с единицы. - Гибкость. Объект-перечисление годится и для цикла, и для преобразования в список пар с помощью
list().
Пример кода
Нумерация элементов списка
months = ['Jan', 'Feb', 'Mar', 'April', 'May', 'June']
for i, m in enumerate(months):
print(i, m)
# 0 Jan, 1 Feb, 2 Mar, ...
for i, m in enumerate(months, 1):
print(i, m)
# 1 Jan, 2 Feb, 3 Mar, ...
print(list(enumerate(months)))
# [(0, 'Jan'), (1, 'Feb'), (2, 'Mar'), (3, 'April'), (4, 'May'), (5, 'June')]Что использовать на практике
- Цикл с индексом. Когда нужен и номер элемента, и само значение, используй
enumerate()вместо ручного счётчика. - Нумерация с единицы. Для вывода пользователю номеров, начинающихся с единицы, передай стартовое значение вторым аргументом.
- Преобразование в список. Если пары «индекс — элемент» нужны как данные, оберни результат в
list().