
enumerate() — встроенная функция в Python, которая позволяет использовать автоматический счетчик при циклическом переборе итерируемых объектов.
Функция enumerate() в Python
Функция enumerate() имеет следующий вид:
enumerate ( iterable , start = 0 )
Функция принимает два аргумента:
-
iterable— объект, поддерживающий итерацию. -
start— число, с которого начинается отсчёт. Этот аргумент необязателен. По умолчанию отсчёт начинается с 0.
enumerate() возвращает объект перечисления, для которого можно вызвать метод __next__() (или next() в Python 2), чтобы получить кортеж , содержащий количество и текущее значение итерируемого объекта.
Вот пример того, как создать список кортежей с помощью list() и как выполнить цикл по итерируемому объекту:
directions = [ "north" , "east" , "south" , "west" ] list ( enumerate ( directions )) for index , value in enumerate ( directions ): print ( " {} : {} " . format ( index , value ))
[(0, 'north'), (1, 'east'), (2, 'south'), (3, 'west')] 0: north 1: east 2: south 3: west
Если индексация с нуля вам не подходит, выберите другой начальный индекс для перечисления:
directions = [ "north" , "east" , "south" , "west" ] list ( enumerate ( directions , 1 ))
[(1, 'north'), (2, 'east'), (3, 'south'), (4, 'west')]
Функция enumerate() работает с любым итерируемым объектом. Итерируемый объект — это контейнер, по которому можно выполнять итерацию. Проще говоря, это объект, который можно перебирать с помощью цикла for . Большинство встроенных объектов Python, таких как строки, списки и кортежи, являются итерируемыми.
Напишите больше кода на Python с помощью enumerate()
Цикл for в Python кардинально отличается от традиционного цикла for стиле C, доступного во многих языках программирования. Цикл for в Python эквивалентен циклу foreach в других языках программирования.
Распространенным приемом, используемым новыми разработчиками Python для получения соответствующего индекса при работе с итерируемыми объектами, является использование шаблона range(len(...)) или установка и увеличение счетчика:
planets = [ "Mercury" , "Venus" , "Earth" , "Mars" , "Jupiter" , "Saturn" , "Uranus" , "Neptune" ] for i in range ( len ( planets )): print ( "Planet {} : {} " . format ( i , planets [ i ]))
planets = [ "Mercury" , "Venus" , "Earth" , "Mars" , "Jupiter" , "Saturn" , "Uranus" , "Neptune" ] i = 0 for planet in planets : print ( "Planet {} : {} " . format ( i , planet )) i += 1
Приведенные выше циклы можно переписать более идиоматичным образом, используя enumerate() :
planets = [ "Mercury" , "Venus" , "Earth" , "Mars" , "Jupiter" , "Saturn" , "Uranus" , "Neptune" ] for index , value in enumerate ( planets ): print ( "Planet {} : {} " . format ( index , value ))
Все методы дадут одинаковый результат:
Planet 0: Mercury Planet 1: Venus Planet 2: Earth Planet 3: Mars Planet 4: Jupiter Planet 5: Saturn Planet 6: Uranus Planet 7: Neptune
Заключение
В этой статье мы показали вам, как использовать функцию enumerate() в Python.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства