Python Enumerate - пример Python Enum для индекса цикла
Когда вы кодируете на Python, вы можете использовать функцию enumerate()
и for loop
чтобы распечатать каждое значение итерации со счетчиком.
В этой статье я покажу вам, как использовать Python функцию enumerate()
с for loop
и объясню, почему это лучший вариант, чем создание собственного счетчика приращения.
Но сначала давайте посмотрим, как этого добиться без функции enumerate()
.
Как использовать for loop без функции enumerate() в Python
В Python итерируемый объект - это объект, в котором вы можете выполнять итерацию и возвращать по одному значению за раз. Примеры итераций включают списки, кортежи и строки.
В этом примере у нас есть список имен собак и переменная с именем count
.
dogs = ['Harley', 'Phantom', 'Lucky', 'Dingo']
count = 1
Мы можем использовать for loop
чтобы просмотреть список и распечатать каждое имя. Мы также собираемся увеличивать переменную count
на 1 каждый раз, чтобы отслеживать, сколько раз мы перебирали список.
for name in dogs:
print(count, name)
count += 1
Вот как будет выглядеть результат на экране:
Хотя этот подход действительно работает, он представляет собой возможную ошибку.
Распространенной ошибкой было бы забыть увеличить значение переменной count
.
Если бы я изменил код, в консоли был бы напечатан новый результат:
dogs = ['Harley', 'Phantom', 'Lucky', 'Dingo']
count = 1
for name in dogs:
print(count, name)
Теперь переменная count
больше не отслеживает точно, сколько раз мы просматривали список в цикле.
Вместо того, чтобы увеличивать переменную count
самостоятельно, мы можем использовать функцию enumerate()
с расширением for loop
.
Функция enumerate() в Python
Встроенная функция enumerate()
принимает итерируемый объект и необязательный начальный аргумент.
enumerate(iterable, optional start argument)
Если вы опустите необязательный аргумент start
, счет будет равен нулю.
Возвращаемое значение функции enumerate()
- объект.
Эта функция отслеживает итерации, поэтому вам не нужно помнить об обновлении переменной count
.
Мы можем использовать функцию enumerate()
с for loop
чтобы распечатать значения итерации со счетчиком.
Как использовать for loop и функцию enumerate() в Python
В этом примере мы хотим распечатать список направлений, ведущих от Таймс-сквер до Джульярдской музыкальной школы в Нью-Йорке, штат Нью-Йорк.
Сначала нам нужно создать список directions
:
directions = [
'Head north on Broadway toward W 48th St',
'Turn left onto W 58th St',
'Turn right onto 8th Ave',
'Turn left onto Broadway',
'Turn left onto Lincoln Center Plaza',
'Turn right onto Jaffe Dr',
'Turn left onto Broadway',
'Turn left onto W 65th St'
]
Функция enumerate()
будет принимать аргументы directions
и start
. Мы хотим начать отсчет с 1 вместо 0 по умолчанию.
for count, direction in enumerate(directions, start=1):
Внутри цикла мы распечатаем переменные цикла count
и direction
.
print(count, direction)
Вот как выглядит все вместе:
directions = [
'Head north on Broadway toward W 48th St',
'Turn left onto W 58th St',
'Turn right onto 8th Ave',
'Turn left onto Broadway',
'Turn left onto Lincoln Center Plaza',
'Turn right onto Jaffe Dr',
'Turn left onto Broadway',
'Turn left onto W 65th St'
]
for count, direction in enumerate(directions, start=1):
print(count, direction)
Вот как выглядят результаты в консоли:
Как видите, переменная count
была автоматически обновлена функцией enumerate()
.
Это исключает возможность ошибок, если мы забудем увеличить значение переменной count
.