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 = ["apples", "pears", "bananas"]
Suponha que você queira acompanhar a contagem de cada elemento na lista. Você pode usar um loop for com um variar() funcionar assim.
count = 0for fruit in range(len(my_fruits)):
print(count, my_fruits[count])
count += 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[count]. 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().
enumerate(iterable, 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.
def enumerate(sequence, start=0):
n = startfor elem in sequence:
yield n, elem
n += 1
Essa função, que você pode encontrar na documentação do Python enumerate, 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 = ["apples", "pears", "bananas"]
enumerate_object = enumerate(my_fruits)
print(list(enumerate_object))
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(my_fruits, 10)
print(list(enumerate_object))
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:
my_string = "makeuseof"for count, value in enumerate(my_string):
if count == 5:
print (value)
Enumerar uma Tupla Python
Você também pode usar enumerar() para iterar sobre uma tupla Python. Neste exemplo, o programa imprime um cabeçalho na primeira iteração, antes de exibir os itens.
my_fruits_tuple = ("apples", "pears", "bananas")for index, value in enumerate(my_fruits_tuple):
if (index == 0):
print("Fruits:")
print(value)
/*
Fruits:
apples
pears
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]for index, value in enumerate(my_number_list):
if (value > 10):
my_number_list[index] -= 2
print(my_number_list)
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.