Este tutorial irá ensiná-lo a usar o enumerar() função em Python.
A função enumerate() em Python fornece uma sintaxe concisa para acessar os itens em um iterável junto com seus índices.
Começaremos revisando como acessar itens e índices usando um loop simples e, em seguida, aprenderemos a sintaxe do Python. enumerar() função. Também codificaremos exemplos ao longo do caminho.
Vamos começar.
Como Iterar Usando For Loop em Python
Qualquer objeto Python que você pode iterar e acessar os itens individuais – um de cada vez é chamado de iterável. Portanto, listas, tuplas, dicionários e strings do Python são todos iteráveis.
Vamos dar um exemplo de uma lista de compras definida na célula de código abaixo.
shopping_list = ("fruits","cookies","cereals","protein bars","post-it notes")
Em Python, você pode usar o for
loop para percorrer qualquer iterável. A sintaxe para fazer isso é a seguinte:
for item in <iterable>:
# do something on item
# item: looping variable
# <iterable>: any Python iterable: list, tuple, dictionary, string, and so on.
Agora, usando esta sintaxe, vamos percorrer shopping_list
e acessar os itens individuais.
for item in shopping_list:
print(item)
# Output
fruits
cookies
cereals
protein bars
post-it notes
Essa construção ajuda você a acessar os itens diretamente. No entanto, às vezes você pode precisar acessar o índice dos itens, além dos próprios itens.
Você pode usar um index
variável, que você pode incrementar dentro do corpo do loop, conforme mostrado abaixo:
index = 0
for item in shopping_list:
print(f"index:{index}, {item}")
index += 1
# Output
index:0, fruits
index:1, cookies
index:2, cereals
index:3, protein bars
index:4, post-it notes
Mas este não é o método mais eficiente. Se você não lembrar de incrementar o índice, seu código não funcionará como esperado.
index = 0
for item in shopping_list:
print(f"index:{index}, {item}")
# no update of index inside loop body
# index is never updated and is always 0
# Output
index:0, fruits
index:0, cookies
index:0, cereals
index:0, protein bars
index:0, post-it notes
Outro padrão comum de uso do for
loop está em conjunto com o range()
função. Aprenderemos sobre isso na próxima seção.
Como usar a função range () para acessar o índice
Integrado do Python len()
A função retorna o comprimento de qualquer objeto Python. Então você pode ligar para o len()
função com shopping_list
o argumento para obter o comprimento do shopping_list
(que é 5, neste caso).
len(shopping_list)
# Output: 5
O range()
A função retorna um objeto de intervalo que você pode usar em loop. Quando você faz um loop range(stop)
você obtém os índices 0, 1, 2,…, stop-1.
Definindo stop = len(list)
, você pode obter a lista de índices válidos. Então, usando o range()
função, você pode acessar o índice, bem como o item correspondente, conforme mostrado abaixo.
for index in range(len(shopping_list)):
print(f"index:{index}, item: {shopping_list(index)}")
# Output
index:0, item: fruits
index:1, item: cookies
index:2, item: cereals
index:3, item: protein bars
index:4, item: post-it notes
No entanto, esta não é a maneira Pythonic recomendada para acessar índices e itens simultaneamente.
Sintaxe da função enumerate() do Python
do Python enumerar() A função permite acessar os itens junto com seus índices usando a seguinte sintaxe geral:
enumerate(<iterable>, start = 0)
Na sintaxe acima:
<iterable>
é um obrigatório parâmetro e pode ser qualquer iterável do Python, como uma lista ou tupla.- start é um parâmetro opcional que controla o índice no qual a contagem começa. Se você não especificar o valor de start, o padrão será zero.
Agora você pode ligar para o enumerate()
função com shopping_list
e retorna um objeto enumerate, conforme mostrado na célula de código abaixo.
enumerate(shopping_list)
<enumerate at 0x7f91b4240410>
Você não pode fazer um loop através do enumerate
objeto. Então vamos converter o enumerate
objeto em uma lista Python.
list(enumerate(shopping_list))
# Output
((0, 'fruits'),
(1, 'cookies'),
(2, 'cereals'),
(3, 'protein bars'),
(4, 'post-it notes'))
Outro método para acessar os itens do enumerate
objeto é chamar o função next() com o enumerate
objeto como argumento. Em Python, o next()
A função retorna o próximo item de um iterador.
Internamente, o next()
função funciona chamando o __next__
no objeto iterador para recuperar os itens sucessivos.
Vamos atribuir o objeto enumerate à variável shopping_list_enum
.
shopping_list_enum = enumerate(shopping_list)
Quando você ligar pela primeira vez next()
com shopping_list_enum
você obterá o índice zero e o item no índice 0: a tupla (0, 'fruits')
.
Quando você continuar a fazer mais chamadas para o next()
função, você obterá os itens sucessivos junto com seus índices, conforme descrito abaixo.
next(shopping_list_enum)
# (0, 'fruits')
next(shopping_list_enum)
# (1, 'cookies')
next(shopping_list_enum)
# (2, 'cereals')
next(shopping_list_enum)
# (3, 'protein bars')
next(shopping_list_enum)
# (4, 'post-it notes')
O que acontece se você ligar next()
função depois de acessar todos os itens e chegar ao final da lista? você ganha um StopIteration Error
.
next(shopping_list_enum)
# ---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-16-4220f68f6c7e> in <module>()
----> 1 next(shopping_list_enum)
StopIteration:
O enumerate()
A função retorna os índices e itens sucessivos somente quando necessário e não são calculados antecipadamente. Em Projetos Python onde você precisa levar em conta a eficiência da memória, você pode tentar usar o enumerate()
função quando você precisa percorrer grandes iteráveis.
Python enumerate () Exemplos de funções
Agora que aprendemos a sintaxe para usar o enumerate()
função, vamos modificar o loop for que tínhamos anteriormente.
Da seção anterior, sabemos que percorrer o objeto enumerate retorna uma tupla com o índice e o item. Podemos desempacotar esta tupla em duas variáveis: index
e item
.
for index, item in enumerate(shopping_list):
print(f"index:{index}, item:{item}")
# Output
index:0, item:fruits
index:1, item:cookies
index:2, item:cereals
index:3, item:protein bars
index:4, item:post-it notes
A seguir, veremos como especificar um valor inicial personalizado.
Como enumerar () com valor inicial personalizado
Python segue a indexação zero, então o start
o valor é 0 por padrão. No entanto, se você precisar dos índices em formato legível por humanos – começando em 1 ou qualquer outro índice de sua escolha, poderá especificar um padrão personalizado start
valor.
No shopping_list
por exemplo, se você quiser começar a contar a partir de 1, defina start = 1
.
for index, item in enumerate(shopping_list,1):
print(f"index:{index}, item:{item}")
# Output
index:1, item:fruits
index:2, item:cookies
index:3, item:cereals
index:4, item:protein bars
index:5, item:post-it notes
No entanto, ao especificar o valor inicial personalizado, você deve especificá-lo como o segundo argumento posicional.
Se você trocar por engano a ordem do iterável e o valor inicial, ocorrerá um erro, conforme explicado na célula de código abaixo.
for index, item in enumerate(1,shopping_list):
print(f"index:{index}, item:{item}")
# Output
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-5dbf7e2749aa> in <module>()
----> 1 for index, item in enumerate(1,shopping_list):
2 print(f"index:{index}, item:{item}")
TypeError: 'list' object cannot be interpreted as an integer
Para evitar tais erros, você pode especificar start
como um argumento de palavra-chave, conforme mostrado abaixo.
for index, item in enumerate(shopping_list, start = 1):
print(f"index:{index}, item:{item}")
# Output
index:1, item:fruits
index:2, item:cookies
index:3, item:cereals
index:4, item:protein bars
index:5, item:post-it notes
Até agora, você aprendeu a usar o enumerate()
função com listas Python. Você também pode usar a função enumerate para percorrer strings Python dicionários e tuplas.
Como usar a função enumerate () com tuplas do Python
Suponha shopping_list
é uma tupla. Em Python, as tuplas também são coleções — semelhantes às listas do Python, mas são imutável. Portanto, você não pode modificá-los e tentar fazer isso levará a um erro.
O trecho de código a seguir inicializa shopping_list
como uma tupla.
shopping_list = ("fruits","cookies","cereals","protein bars","post-it notes")
type(shopping_list)
# Tuple
Se você tentar modificar o primeiro item na tupla, receberá um erro, pois uma tupla do Python é uma coleção imutável.
shopping_list(0) = 'vegetables'
# Output
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-2-ffdafa961600> in <module>()
----> 1 shopping_list(0) = 'vegetables'
TypeError: 'tuple' object does not support item assignment
▶ Agora, execute o trecho de código a seguir para verificar se o enumerate()
função funciona como esperado com tuplas.
shopping_list = ("fruits","cookies","cereals","protein bars","post-it notes")
for index, item in enumerate(shopping_list):
print(f"index:{index}, item:{item}")
Como usar a função enumerate () com strings Python
Você também pode usar a função enumerate() do Python para percorrer strings e acessar os caracteres e índices simultaneamente.
Aqui está um exemplo.
py_str = 'Butterfly'
for index, char in enumerate(py_str):
print(f"index {index}: {char}")
# Output
index 0: B
index 1: u
index 2: t
index 3: t
index 4: e
index 5: r
index 6: f
index 7: l
index 8: y
Na saída acima, vemos que os caracteres junto com seus índices (0-8) foram impressos.
Conclusão
Aqui está um resumo do que você aprendeu.
- Você pode usar para loops para acessar os itens e manter um contador separado ou variável de índice.
- Se quiser, você pode usar o faixa() função para obter os índices válidos e acessar os itens indexando na lista.
- Como uma maneira Pythonic recomendada, você pode usar o Python’s enumerar() função com a sintaxe: enumerar (iterável). Por padrão, a contagem ou índice começa em 0.
- Você pode especificar o costume começar valor com a sintaxe enumerate(iterável, start) para obter o índice começando no valor começar e os itens correspondentes.
- Você pode usar a função enumerate ao trabalhar com tuplas, strings, dicionários e, em geral, qualquer iterável do Python.
Espero que você tenha achado este tutorial sobre a função enumerate() útil. A seguir, saiba como encontre o índice de um item nas listas do Python . Continue codificando!