В языке программирования Python 3 есть встроенная функция enumerate. Периодически требуется пройти по элементам списка и при этом обрабатывать не только значение элемента, но так же и его порядковый номер в списке. Вот в этом случае она и понадобится.
Аргументы
Аргументов у функции enumerate два:
- Объект, элементы которого будем перебирать. Необязательно это должен быть список, это может быть, например, множество или словарь.
- Начальное значение индекса (start). По умолчанию начальное значение равно 0.
Возвращает итератор на кортеж из двух элементов: индекс и элемент объекта.
Пример использования
Вот пример использования. С помощью enumerate мы перебираем весь список data. При переборе мы получали кортеж, состоящий из двух элементов. В переменной num будет порядковый номер элемента в списке. В переменной val – значение элемента. В качестве второго аргумента в функции enumerate мы использовали цифру 1, чтобы индексы начинались с единицы, а не с нуля.
data = [2, 5, 3, 4, 1, 5]
for num, val in enumerate(data, 1):
print(str(num) + '-ое значение равно ' + str(val))
1-ое значение равно 2
2-ое значение равно 5
3-ое значение равно 3
4-ое значение равно 4
5-ое значение равно 1
6-ое значение равно 5
Без использования enumerate
Если не использовать enumerate в Python 3, то можно сделать свой счетчик. Задать ему начальное значение и при каждом проходе цикла его увеличивать. Например, следующим образом.
colors = ['red', 'green', 'blue']
ind = 1
for color in colors:
print(str(ind) + '-й цвет: ' + color)
ind += 1
1-й цвет: red
2-й цвет: green
3-й цвет: blue
Использование next
Функция enumerate возвращает итератор. Используя функцию next можно получить кортежи.
a = [2, 5, 3, 4, 1, 5] b = enumerate(a) c = next(b) print(c) print(type(c)) print(next(b)) (0, 2) <class 'tuple'> (1, 5)
Если при очередном вызове next, следующий элемент будет отсутствовать, возникает исключение StopIteration. Подробнее про типы исключений и как их обрабатывать есть отдельная статья на сайте.
Все о Python