Добавить в корзинуПозвонить
Найти в Дзене
Калинкин

Функция enumerate() в Python

Что такое функция enumerate() в Python и когда она вам понадобится? Узнайте в этой статье. При выполнении итерации по списку в Python вам часто потребуется отслеживать индексы элементов списка. enumerate() Функция предоставляет полезный способ сделать это. В этой статье я покажу вам, как использовать эту функцию, чтобы перевести ваши циклы на следующий уровень. Функция enumerate() в Python Прежде чем мы начнем, мы должны рассказать о некоторой предыстории enumerate() функции. Синтаксис выглядит следующим образом: enumerate(iterable, start=0) Она принимает требуемый итерируемый тип, такой как список, массив или кортеж. Существует также необязательный аргумент, который определяет начальное значение счетчика индекса, которое по умолчанию равно нулю. Зацикливание с помощью цикла for Допустим, у нас есть список слов, которые мы хотим распечатать. Мы можем использовать цикл for для перебора элементов и использовать print() инструкцию для вывода их на экран: >>> words = ['here', 'are', 'some'
Оглавление
enumerate() в Python
enumerate() в Python

Что такое функция enumerate() в Python и когда она вам понадобится? Узнайте в этой статье.

При выполнении итерации по списку в Python вам часто потребуется отслеживать индексы элементов списка. enumerate() Функция предоставляет полезный способ сделать это. В этой статье я покажу вам, как использовать эту функцию, чтобы перевести ваши циклы на следующий уровень.

Функция enumerate() в Python

Прежде чем мы начнем, мы должны рассказать о некоторой предыстории enumerate() функции. Синтаксис выглядит следующим образом:

enumerate(iterable, start=0)

Она принимает требуемый итерируемый тип, такой как список, массив или кортеж. Существует также необязательный аргумент, который определяет начальное значение счетчика индекса, которое по умолчанию равно нулю.

Зацикливание с помощью цикла for

Допустим, у нас есть список слов, которые мы хотим распечатать. Мы можем использовать цикл for для перебора элементов и использовать print() инструкцию для вывода их на экран:

>>> words = ['here', 'are', 'some', 'words']
>>> for word in words:
...     print(word)
Результат:
here
are
some
words

Обратите внимание, что элементы имеют строковый тип. Вы можете проверить, используя type() встроенную функцию.

В качестве альтернативы, мы могли бы распечатать индекс каждого элемента списка с помощью функций range() и len():

>>> for i in range(len(words)):
...     print(i)
Результат:
0
1
2
3

Здесь типом индексов является целое число. Но есть некоторые ситуации, когда вы хотели бы напечатать и элемент, и индекс в одном цикле. Один из способов - создать счетчик и увеличивать его после каждой итерации:

>>> i = 0
>>> for word in words:
...     print(i, word)
...     i+=1
Результат:
0 here
1 are
2 some
3 words

Мы используем оператор присваивания сложения (+=) для увеличения счетчика после каждой итерации. Это позволяет выполнить работу, но это не самый эффективный способ.

Выполнение цикла с помощью enumerate()

Здесь появляется enumerate() функция, которая упрощает нашу жизнь. Вместо того, чтобы создавать счетчик и перебирать элементы, мы можем получить тот же результат более эффективно, используя enumerate():

>>> for i, word in enumerate(words):
...     print(i, word)
Результат:
0 here
1 are
2 some
3 words

Индексы начинаются со значения по умолчанию, равного нулю, и печатаются как целые числа. Слова печатаются в виде строк.

Давайте увеличим сложность, рассмотрев следующий вариант использования. У нас есть результаты забега на 100 м, и мы хотели бы их распечатать. Мы хотим распечатать 3 вещи: позицию участника, его имя и время. Результаты сохраняются в виде списка кортежей:

>>> results = [('Строгова-Анна', 10.610), ('Иванов-Пётр', 10.740), ('Киркоров', 10.760)]

Мы можем использовать то, что мы узнали до сих пор, чтобы достичь этого всего за несколько строк кода Python:

>>> for i, data in enumerate(results, start=1):
...     name, time = data[0], data[1]
...     print('{}. {}, {}s'.format(i, name, time))
Результат:
1. Строгова-Анна, 10.61s
2. Иванов-Пётр, 10.74s
3. Киркоров, 10.76s

Позиция выводится путем запуска счетчика на 1 с помощью start=1 необязательного аргумента. Имя и время являются первым и вторым элементами кортежа. Обратите внимание на использование форматирования строк для удобной печати результатов.

К счастью для нас, список результатов был предварительно отсортирован по времени от самого быстрого к самому медленному. Если это не так, вы можете отсортировать кортежи в списке либо по первому элементу (имени), либо по второму элементу (времени). Чтобы сделать это, вам нужно было бы воспользоваться встроенной sorted() функцией. Это немного сложно, но попробуйте.