Python suporta muitos objetos iteráveis: listas, tuplas e strings são apenas alguns. O loop for do Python é flexível o suficiente para lidar com esses objetos com facilidade. Em particular, evita que você tenha que lidar com o índice numérico de cada entrada.
Mas, às vezes, você desejará trabalhar com um índice, para contar ou filtrar itens em uma coleção, por exemplo. Saiba como você pode usar a função enumerate do Python para iterar em uma sequência enquanto acompanha o índice e o elemento.
Iterando sem enumerar()
Considere a seguinte lista de Python.
my_fruits = ["maçãs", "peras", "bananas"]
Suponha que você queira acompanhar a contagem de cada elemento na lista. Você poderia use um laço for com um variar() funcionar assim.
contagem = 0
por fruta dentro range (len (minhas_frutas)):
print (contagem, minhas_frutas[contagem])
contar += 1
Embora isso funcione, ele tem algumas deficiências:
- Você tem que acompanhar a contagem fora do loop.
- Você tem que incrementar a contagem em cada iteração.
- Você tem que calcular o comprimento do loop.
- intervalo (len()) só funciona com objetos contáveis e indexáveis.
Existe uma solução melhor: a função enumerate().
Como enumerate() funciona em Python
O Python enumerar() A função recebe uma coleta de dados e retorna um objeto enumerate. O objeto enumerate contém um contador como chave para cada item que o objeto contém. o enumerar() A função faz isso atribuindo a cada item uma contagem. Essa contagem corresponde ao número de iterações que a função concluiu para atingir esse valor.
Este contador facilita o acesso aos itens da coleção ou até mesmo a mutação da coleção sempre que possível.
Com enumerar(), você não precisa acompanhar o comprimento do loop ou a contagem de iterações. Você também pode evitar acessar explicitamente o valor usando o operador de índice, como frutas[contagem]. A função enumerate lida automaticamente com todos esses recursos.
A sintaxe do Python enumerate()
Abaixo está a sintaxe geral para a função enumerate().
enumerar (iterável, start=0)
enumerate() recebe dois argumentos:
- iterável: uma coleção de dados ou sequência sobre a qual o Python pode iterar. Por exemplo. uma lista ou tupla.
- start: o índice a partir do qual a função enumerate deve começar a contar.
Como enumerate() é implementado
Para entender como enumerar() funciona, vamos ver como ele é realmente implementado.
defenumerar(sequência, início=0):
n = início
por elemento dentro seqüência:
colheita n, ele
n += 1
Esta função, que você pode encontrar no Documentação de enumeração do Python, recebe uma sequência e um argumento inicial cujo padrão é 0.
A função então inicializa a variável n para a variável inicial. Isso mantém o controle do número de iterações.
No loop for que segue para cada elemento na sequência,
- colheita pausa a execução do loop.
- Ele também retorna a contagem atual (n) e o valor (elem).
- Quando o loop é retomado, ele incrementa n.
O valor de retorno é um objeto de pares chave-valor.
Se você chamasse o enumerar() função e passar a lista de frutas, este seria o valor de saída.
my_fruits = ["maçãs", "peras", "bananas"]
enumerate_object = enumerate (my_fruits)
print (lista (enumerate_object))
# output - [(0, 'maçãs'), (1, 'peras'), (2, 'bananas')]
Enumerar com um índice inicial diferente
No exemplo acima, não especificamos o índice inicial. O exemplo abaixo mostra como você pode definir o índice inicial para um número de sua escolha.
Para começar em 10, faça o seguinte.
enumerate_object = enumerate (minhas_frutas, 10)
print (lista (enumerate_object))
# output - [(10, 'maçãs'), (11, 'peras'), (12, 'bananas')]
Python enumerate() Exemplos
Aqui estão alguns exemplos que mostram como você pode usar enumerar() em Python.
Enumerar uma string Python
Neste exemplo, você usará enumerate para recuperar a letra no índice 5:
minha_string = "makeuseof"
por contagem, valor dentro enumerar (my_string):
E se contagem == 5:
imprimir (valor)
# saída - s
Enumerar uma Tupla Python
Você também pode usar enumerar() iterar sobre um Tupla Python. Neste exemplo, o programa imprime um cabeçalho na primeira iteração, antes de exibir os itens.
my_fruits_tuple = ("maçãs", "peras", "bananas")
por índice, valor dentro enumerar (my_fruits_tuple):
E se (índice == 0):
print("Frutas:")imprimir (valor)
/*
Frutas:
maçãs
peras
bananas
*/
Enumerar uma lista do Python
No exemplo abaixo, você está usando enumerar para decrementar todos os números na lista acima de 10 por 2.
my_number_list = [10, 17, 15, 6]
por índice, valor dentro enumerar (my_number_list):
E se (valor > 10):
my_number_list[index] -= 2imprimir (my_number_list)
# saída - [10, 15, 13, 6]
Use enumerate para contar seus iteráveis
Python inclui enumerar() como uma função incorporada. Você pode usá-lo para iterar e contar itens em uma coleção iterável, como lista, tupla ou string. Ele pode ajudá-lo a acompanhar o índice verdadeiro de cada elemento, mas você também pode especificar seu próprio índice inicial. Use-o como alternativa ao variar() se você estiver trabalhando com objetos que não são objetos contáveis e indexáveis.