enumerate
Введение | |
Пример | |
Разбор | |
Похожие статьи |
Введение
В этой статье вы узнаете как работает функция enumerate в Python 3.
enumerate получает итерируемый объект а возвращает набор кортежей вида (индекс элемента, элемент)
Создайте файл
enumerate_demo.py
и копируйте туда код из примеров.
Запустить файл можно командой
python3 enumerate_demo.py
Пример
Пройдёмся функцией enumerate() по списку и заодно убедимся, что возвращаются кортежи (tuple)
sites = ["heihei.ru", "topbicycle.ru", "urn.su"] for site in enumerate(sites): print(f"site: {site}, type(site): {type(site)}")
site: (0, 'heihei.ru'), type(site): <class 'tuple'> site: (1, 'topbicycle.ru'), type(site): <class 'tuple'> site: (2, 'urn.su'), type(site): <class 'tuple'>
Подробности
Разберём способы итерации по объектам списка
letters = ['a', 'b', 'c', 'd', 'e']
for letter in letters:
print(letter)
python enumerate_demo.py
a b c d e
Перебрать все элементы списка можно с помощью индексов
for index in range(len(letters)):
print('letters', index, '=', letters[index])
python enumerate_demo.py
letters 0 = a letters 1 = b letters 2 = c letters 3 = d letters 4 = e
Чтобы пользоваться одновременно двумя переменными используется функция enumerate
for index, item in enumerate(letters):
print('letters', index, '=', item)
python enumerate_demo.py
letters 0 = a letters 1 = b letters 2 = c letters 3 = d letters 4 = e
enumerate возвращает итерируемый объект (iterable object), который является последовательностью кортежей (tuple) вида (index, item)
Чтобы лучше понять происходящее добавьте в скрипт следующий код
enum_obj = enumerate(letters)
print(next(enum_obj))
print(next(enum_obj))
print(next(enum_obj))
print(type(enum_obj))
(0, 'a') (1, 'b') (2, 'c') <class 'enumerate'>
Ещё один способ обхода списка - с помощью while
index = 0
while index < len(letters):
print('letters', index, '=', letters[index])
index +=1