Функция enumerate() — применяется для итерируемых объектов (списки, кортежи, строки, множества или словари) и позволяет получить одновременно и индекс элемента и его значение.
С помощью этой функции можно генерировать кортежи, которые будут включать в себя индекс и значение элемента.
enumerate(iterable, start=0)
iterable
— итерируемый объект
start
— необязательный параметр, целое число int
, начальное значение счётчика.
Получим список кортежей из заданного списка:
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, 'четыре')
Также, используя в цикле 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()
, но иногда она может быть полезной и удобной.
Содержание: