Este tutorial ensinará como usar a função enumerate() 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 looping simples e, em seguida, continuaremos a aprender a sintaxe da função enumerate() do Python. Também codificaremos exemplos ao longo do caminho.
Vamos começar.
últimas postagens
Como iterar usando for Loop em Python
Qualquer objeto Python sobre o qual você possa 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 loop for 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 essa sintaxe, vamos percorrer a lista_compras 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 uma variável de índice, que pode ser incrementada 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 se lembrar de incrementar o índice, seu código não funcionará conforme o 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 usar o loop for é em conjunto com a função range(). Vamos aprender sobre isso na próxima seção.
Como usar a função range() para acessar o índice
A função len() integrada do Python retorna o comprimento de qualquer objeto Python. Então você pode chamar a função len() com shopping_list o argumento para obter o comprimento da shopping_list (que é 5, neste caso).
len(shopping_list) # Output: 5
A função range() retorna um objeto range que você pode usar no loop. Quando você percorre range(stop), obtém os índices 0, 1, 2,…, stop-1.
Ao definir stop = len(list), você pode obter a lista de índices válidos. Assim, usando a função range(), 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, essa não é a maneira Pythonic recomendada para acessar índices e itens simultaneamente.
Sintaxe da função Python enumerate()
A função enumerate() do Python permite acessar os itens junto com seus índices usando a seguinte sintaxe geral:
enumerate(<iterable>, start = 0)
Na sintaxe acima:
é um parâmetro obrigatório 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 início, o padrão será zero.
Agora você pode chamar a função enumerate() com shopping_list e ela retorna um objeto enumerate, conforme mostrado na célula de código abaixo.
enumerate(shopping_list) <enumerate at 0x7f91b4240410>
Você não pode percorrer o objeto enumerate. Então vamos converter o objeto enumerate 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 objeto enumerate é chamar o função seguinte() com o objeto enumerate como argumento. Em Python, a função next() retorna o próximo item de um iterador.
Internamente, a função next() funciona chamando o método __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)
Ao chamar next() pela primeira vez com shopping_list_enum, você obterá o índice zero e o item no índice 0: a tupla (0, ‘frutas’).
Ao continuar a fazer outras chamadas para a função next(), 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ê chamar a função next() depois de acessar todos os itens e chegar ao final da lista? Você recebe um erro StopIteration.
next(shopping_list_enum) # --------------------------------------------------------------------------- StopIteration Traceback (most recent call last) <ipython-input-16-4220f68f6c7e> in <module>() ----> 1 next(shopping_list_enum) StopIteration:
A função enumerate() retorna os índices e itens sucessivos somente quando necessário e não são computados antecipadamente. Em projetos Python em que você precisa levar em conta a eficiência da memória, você pode tentar usar a função enumerate() quando precisar percorrer iteráveis grandes.
Exemplos de funções Python enumerate()
Agora que aprendemos a sintaxe para usar a função enumerate(), vamos modificar o loop for que tínhamos anteriormente.
Da seção anterior, sabemos que fazer um loop pelo objeto enumerate retorna uma tupla com o índice e o item. Podemos descompactar essa tupla em duas variáveis: índice 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
Em seguida, vamos ver como especificar um valor inicial personalizado.
Como enumerar () com valor inicial personalizado
O Python segue a indexação zero, portanto, o valor inicial é 0 por padrão. No entanto, se você precisar dos índices em formato legível, começando em 1 ou qualquer outro índice de sua escolha, você pode especificar um valor inicial personalizado.
No exemplo da lista_compras, 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, certifique-se de especificá-lo como o segundo argumento posicional.
Se você trocar por engano a ordem do iterável e o valor inicial, você encontrará 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 esses 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 a função enumerate() com listas do Python. Você também pode usar a função enumerate para percorrer strings, dicionários e tuplas do Python.
Como usar a função enumerate () com tuplas Python
Suponha que lista_compras seja uma tupla. Em Python, tuplas também são coleções — semelhantes às listas de Python, mas são imutáveis. 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 da 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 a função enumerate() funciona conforme o 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
A partir da 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 loops for para acessar os itens e manter um contador ou variável de índice separada.
- Se desejar, você pode usar a função range() para obter os índices válidos e acessar os itens indexando na lista.
- Como uma maneira Pythonic recomendada, você pode usar a função enumerate() do Python com a sintaxe: enumerate(iterable). Por padrão, a contagem ou índice começa em 0.
- Você pode especificar o valor inicial personalizado com a sintaxe enumerate(iterable, start) para obter o índice começando no valor inicial 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. Em seguida, aprenda como encontrar o índice de um item nas listas do Python. Continue codificando!