Функция enumerate() в Python

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

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

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

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

enumerate(iterable, start=0)

iterable — итерируемый объект
start — необязательный параметр, целое число int, начальное значение счётчика.

Примеры работы функции enumerate()

Получим список кортежей из заданного списка:

my_list = ['один', 'два', 'три', 'четыре']
print(list(enumerate(my_list)))
#[(0, 'один'), (1, 'два'), (2, 'три'), (3, 'четыре')]

Если зададим доп. параметр, start, то можно задать свои ключи:

my_list = ['один', 'два', 'три', 'четыре']
print(list(enumerate(my_list, start=10)))
[(10, 'один'), (11, 'два'), (12, 'три'), (13, 'четыре')]

Перебор списка

my_list = ['один', 'два', 'три', 'четыре']
for i in enumerate(my_list):
    print(i)
#(0, 'один')
#(1, 'два')
#(2, 'три')
#(3, 'четыре')

Перебор строки

my_str = 'python'
for i in enumerate(my_str):
    print(i)
#(0, 'p')
#(1, 'y')
#(2, 't')
#(3, 'h')
#(4, 'o')
#(5, 'n')

Перебор словаря

my_dict = {1: 'a', 2: 'b', 3: 'c'}
for i in enumerate(my_dict):
    print(i)
#(0, 1)
#(1, 2)
#(2, 3)

Здесь на выходе мы получаем индексы и ключи.

Перебор множества

my_set = {'один', 'два', 'три', 'четыре'}
for i in enumerate(my_set):
    print(i)
#(0, 'четыре')
#(1, 'два')
#(2, 'один')
#(3, 'три')

Перебор кортежа

my_tuple = ('один', 'два', 'три', 'четыре')
for i in enumerate(my_tuple):
    print(i)
#(0, 'один')
#(1, 'два')
#(2, 'три')
#(3, 'четыре')

«Распаковка» кортежа сгенерированного через enumerate()

Также, используя в цикле for одновременно 2 переменные, можно перебирать сразу и индекс и значение, и соответственно работать с ними:

my_list = ['один', 'два', 'три', 'четыре']
for i, v in enumerate(my_list):
    print(i, v)
#0 один
#1 два
#2 три
#3 четыре
my_list = ['один', 'два', 'три', 'четыре']
for i, v in enumerate(my_list, start=1):
    print(f'Элемент №{i} имеет значение => "{v}"')
#Элемент №1 имеет значение => "один"
#Элемент №2 имеет значение => "два"
#Элемент №3 имеет значение => "три"
#Элемент №4 имеет значение => "четыре"

Увеличим каждое значение элемента списка в 5 раз:

my_list = [1, 2, 3, 4, 5]
for i, v in enumerate(my_list):
    my_list[i] = v * 5
print(my_list)
#[5, 10, 15, 20, 25]

Здесь мы перебираем список и с помощью функции enumerate() получаем индекс и значение элемента списка. В теле цикла обращаемся к элементу списка с помощью индекса, и значение этого элемента умножаем на 5.

Без использования функции этого выглядело бы так:

my_list = [1, 2, 3, 4, 5]
for i in range(len(my_list)):
    my_list[i] = my_list[i] * 5
print(my_list)
#[5, 10, 15, 20, 25]

Другими словами, можно обойтись и без функции enumerate(), но иногда она может быть полезной и удобной.

Содержание: