Python поддерживает множество итерируемых объектов: списки, кортежи и строки — лишь некоторые из них. Цикл for Python достаточно гибок, чтобы легко обрабатывать эти объекты. В частности, это избавляет вас от самостоятельной работы с числовым индексом каждой записи.
Но иногда вам нужно работать с индексом, например, для подсчета или фильтрации элементов в коллекции. Узнайте, как использовать функцию перечисления Python для перебора последовательности, отслеживая при этом как индекс, так и элемент.
Итерация без enumerate()
Рассмотрим следующий список Python.
my_fruits = ["яблоки", "груши", "бананы"]
Предположим, вы хотите отслеживать количество каждого элемента в списке. Ты мог использовать цикл for с диапазон() функция такая.
количество = 0
за фрукты в диапазон (длина (my_fruits)):
распечатать (количество, my_fruits[количество])
количество += 1
Хотя это работает, у него есть несколько недостатков:
- Вы должны отслеживать счет вне цикла.
- Вы должны увеличивать счетчик на каждой итерации.
- Необходимо рассчитать длину петли.
- диапазон (длина()) работает только с исчисляемыми индексируемыми объектами.
Существует лучшее решение: функция enumerate().
Как enumerate() работает в Python
Питон перечислить() Функция принимает набор данных и возвращает перечисляемый объект. Объект enumerate содержит счетчик в качестве ключа для каждого элемента, содержащегося в объекте. перечислить() Функция делает это, присваивая каждому элементу счет. Этот счетчик соответствует количеству итераций, которые функция выполнила для достижения этого значения.
Этот счетчик упрощает доступ к элементам в коллекции или даже ее изменение, где это возможно.
С перечислить(), вам не нужно отслеживать длину цикла или количество итераций. Вы также можете избежать явного доступа к значению с помощью оператора индекса, например фрукты [количество]. Функция перечисления автоматически обрабатывает все эти функции.
Синтаксис Python enumerate()
Ниже приведен общий синтаксис функции enumerate().
перечислить (повторяемый, start=0)
enumerate() принимает два аргумента:
- iterable: коллекция данных или последовательность, которую Python может перебирать. Например. список или кортеж.
- start: индекс, с которого функция перечисления должна начать отсчет.
Как реализован enumerate()
Чтобы понять, как перечислить() работает, давайте посмотрим, как это реализовано на самом деле.
дефперечислить(последовательность, начало=0):
п = начало
за элемент в последовательность:
урожай н, элемент
п += 1
Эта функция, которую вы можете найти в Документация по перечислению Python, принимает последовательность и начальный аргумент, который по умолчанию равен 0.
Затем функция инициализирует переменную n как начальную переменную. Это отслеживает количество итераций.
В цикле for, который следует для каждого элемента последовательности,
- урожай приостанавливает выполнение цикла.
- Он также возвращает текущий счетчик (n) и значение (elem).
- Когда цикл возобновляется, он увеличивает n.
Возвращаемое значение представляет собой объект пар ключ-значение.
Если бы вы позвонили перечислить() функцию и передать ей список фруктов, это будет выходное значение.
my_fruits = ["яблоки", "груши", "бананы"]
enumerate_object = перечислить (my_fruits)
распечатать (список (enumerate_object))
# output - [(0, 'яблоки'), (1, 'груши'), (2, 'бананы')]
Перечислить с другим начальным индексом
В приведенном выше примере мы не указали начальный индекс. В приведенном ниже примере показано, как вы можете установить начальный индекс в число по вашему выбору.
Чтобы начать с 10, сделайте следующее.
enumerate_object = перечислить (my_fruits, 10)
распечатать (список (enumerate_object))
# output - [(10, 'яблоки'), (11, 'груши'), (12, 'бананы')]
Python enumerate() Примеры
Вот несколько примеров, показывающих, как вы можете использовать перечислить() в Питоне.
Перечислить строку Python
В этом примере вы будете использовать enumerate для получения буквы с индексом 5:
my_string = "использовать"
за счет, стоимость в перечислить (my_string):
если количество == 5:
Распечатать (ценность)
# вывод - с
Перечислить кортеж Python
Вы также можете использовать перечислить() перебирать Кортеж Python. В этом примере программа печатает заголовок в первой итерации перед отображением элементов.
my_fruits_tuple = ("яблоки", "груши", "бананы")
за индекс, значение в перечислить (my_fruits_tuple):
если (индекс == 0):
print("Фрукты:")печать (значение)
/*
Фрукты:
яблоки
груши
бананы
*/
Перечислить список Python
В приведенном ниже примере вы используете enumerate для уменьшения всех чисел в списке выше 10 на 2.
мой_номер_список = [10, 17, 15, 6]
за индекс, значение в перечислить (my_number_list):
если (значение > 10):
мой_номер_список[индекс] -= 2распечатать (my_number_list)
# вывод - [10, 15, 13, 6]
Используйте enumerate для подсчета ваших итераций
Python включает в себя перечислить() как встроенная функция. Вы можете использовать его для итерации и подсчета элементов в итерируемой коллекции, такой как список, кортеж или строка. Это может помочь вам отслеживать истинный индекс каждого элемента, но вы также можете указать свой собственный начальный индекс. Используйте его как альтернативу диапазон(), если вы работаете с объектами, которые не являются счетными и индексируемыми объектами.