Назад к вопросам
Junior
109
questionbank

Что такое функция enumerate в Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Функция enumerate() добавляет счетчик к итерируемому объекту и возвращает итератор из пар (счетчик, элемент). Это полезно, когда нужно одновременно получить доступ к элементам коллекции и их индексам.

# Пример использования enumerate() с списком
my_list = ['яблоко', 'банан', 'вишня']
for index, item in enumerate(my_list):
    print(f"Индекс: {index}, Элемент: {item}")

# Вывод:
# Индекс: 0, Элемент: яблоко
# Индекс: 1, Элемент: банан
# Индекс: 2, Элемент: вишня

Начальное значение счетчика по умолчанию равно 0, но его можно задать с помощью аргумента start.

# Пример использования enumerate() с заданным начальным значением
my_list = ['яблоко', 'банан', 'вишня']
for index, item in enumerate(my_list, start=1):
    print(f"Идентификатор: {index}, Элемент: {item}")

# Вывод:
# Идентификатор: 1, Элемент: яблоко
# Идентификатор: 2, Элемент: банан
# Идентификатор: 3, Элемент: вишня

Функция enumerate() возвращает итератор, поэтому для получения элементов необходимо его итерировать или преобразовать в список/кортеж.

# Преобразование результата enumerate() в список кортежей
enumerated_list = list(enumerate(my_list))
print(enumerated_list)

# Вывод:
# [(0, 'яблоко'), (1, 'банан'), (2, 'вишня')]

enumerate() более "питонично" и читаемо, чем использование range(len(...)) для итерации по индексам.

Сравнение подходов:

enumerate() range(len(...))
Более читаемый Менее явный
Более эффективный (не требует получения длины) Менее эффективный (требует получения длины)
Прямой доступ к элементу и индексу Доступ по индексу требует дополнительной операции
# Использование range(len()) - менее предпочтительный способ
my_list = ['яблоко', 'банан', 'вишня']
for i in range(len(my_list)):
    print(f"Индекс: {i}, Элемент: {my_list[i]}")