Resumo : neste tutorial, você aprenderá sobre a enumerate()
função e como usá-la para enumerar uma sequência, iterador ou qualquer outro objeto que suporte iteração.
Introdução à função Python enumerate()
O exemplo a seguir define uma lista de frutas e usa o loop for-in para iterar sobre os elementos da lista e imprimi-los:
fruits = ['Apple', 'Orange', 'Strawberry']
for fruit in fruits:
print(fruit)
Linguagem de código: Python ( python )
Saída:
Apple
Orange
Strawberry
Linguagem de código: Python ( python )
Funciona bem como esperado.
Às vezes, você deseja adicionar índices à saída. Para fazer isso, você pode criar um contador de loop como este:
fruits = ['Apple', 'Orange', 'Strawberry']
index = 1
for fruit in fruits:
print(f'{index}.{fruit}')
index += 1
Linguagem de código: Python ( python )
Saída:
1.Apple
2.Orange
3.Strawberry
Linguagem de código: Python ( python )
Neste exemplo, o índice acompanha os índices. Este exemplo também funciona conforme o esperado. Mas Python tem uma solução melhor com a enumerate()
função:
fruits = ['Apple', 'Orange', 'Strawberry']
for index, fruit in enumerate(fruits, start=1):
print(f'{index}.{fruit}')
Linguagem de código: Python ( python )
Saída:
1.Apple
2.Orange
3.Strawberry
Linguagem de código: Python ( python )
Com a enumerate()
função, você pode obter o mesmo resultado com menos código. Além disso, você não precisa acompanhar o índice aumentando-o a cada iteração.
A enumerate()
é uma função integrada com a seguinte sintaxe:
enumerate(iterable, start=0)
Linguagem de código: Python ( python )
A enumerate()
função aceita dois argumentos:
iterable
é uma sequência , um iterador ou qualquer objeto que suporte o protocolo iterável .start
é o número inicial a partir do qual a função começa a contar. O padrão é zero.
A enumerate()
função retorna um objeto enumerado. O __next__()
método do objeto enumerado retornado retorna uma tupla que contém uma contagem e o valor obtido da iteração sobre o iterável.
Veja o exemplo a seguir:
fruits = ['Apple', 'Orange', 'Strawberry']
e = enumerate(fruits, start=1)
print(type(e))
Linguagem de código: Python ( python )
Neste exemplo, a enumerate()
função retorna e
qual é uma instância da enumerate
classe:
<class 'enumerate'>
Linguagem de código: Python ( python )
A classe enumerate possui o __next__()
método que retorna uma tupla:
fruits = ['Apple', 'Orange', 'Strawberry']
e = enumerate(fruits, start=1)
print(e.__next__())
Linguagem de código: Python ( python )
Saída:
(1, 'Apple')
Linguagem de código: Python ( python )
Se você continuar chamando o __next__()
método, ele retornará o próximo número de contagem com o valor da lista:
fruits = ['Apple', 'Orange', 'Strawberry']
e = enumerate(fruits, start=1)
print(e.__next__())
print(e.__next__())
print(e.__next__())
Linguagem de código: Python ( python )
Saída:
(1, 'Apple')
(2, 'Orange')
(3, 'Strawberry')
Linguagem de código: Python ( python )
Quando todos os itens da lista são iterados, chamar o __next__()
método gerará uma StopIteration
exceção:
fruits = ['Apple', 'Orange', 'Strawberry']
e = enumerate(fruits, start=1)
print(e.__next__())
print(e.__next__())
print(e.__next__())
print(e.__next__()) # StopIteration
Linguagem de código: Python ( python )
O enumerate()
é funcionalmente equivalente à seguinte função:
def enumerate(iterable, start=0):
index = start
for item in iterable:
yield index, item
index += 1
Linguagem de código: Python ( python )
Resumo
- Use
enumerate()
a função Python para obter itens de um iterável com um contador.