Python, Usando a função enumerar(): Obtendo os elementos e índices de uma lista

O negócio

Usando a função Python enumerar(), pode obter o número de índice (contagem, ordem), bem como os elementos de um objecto iterável como uma lista ou tuple in a for loop.

Este artigo explica os princípios básicos da função enumerar().

  • Função para obter o índice num laço para: enumerate()
    • Normal para laço
    • Para loop usando a função enumerar()
  • Iniciar o índice da função enumerar() a 1 (um valor não nulo)
  • Especificar o incremento (passo)

A função enumerar() pode ser usada para obter o índice num laço de for

Normal para laço

l = ['Alice', 'Bob', 'Charlie']

for name in l:
    print(name)
# Alice
# Bob
# Charlie

Para loop usando a função enumerar()

Especificar um objecto iterável tal como uma lista como o argumento da função enumerar().

Pode obter o número de índice e o elemento por essa ordem.

for i, name in enumerate(l):
    print(i, name)
# 0 Alice
# 1 Bob
# 2 Charlie

Iniciar o índice da função enumerar() a 1 (um valor não nulo)

Como mostrado no exemplo acima, por defeito, o índice da função enumerar() começa a partir de 0.

Se quiser começar com um número diferente de 0, especifique um número inicial arbitrário como o segundo argumento da função enumerar().

Para começar do zero, faça o seguinte.

for i, name in enumerate(l, 1):
    print(i, name)
# 1 Alice
# 2 Bob
# 3 Charlie

Claro, pode começar com outros números.

for i, name in enumerate(l, 42):
    print(i, name)
# 42 Alice
# 43 Bob
# 44 Charlie

Útil quando se pretende criar uma cadeia sequencialmente numerada; é mais inteligente especificar o número inicial como o segundo argumento da função enumerar() do que usar 'i+1' para começar a partir de 1.

for i, name in enumerate(l, 1):
    print('{:03}_{}'.format(i, name))
# 001_Alice
# 002_Bob
# 003_Charlie

Ver o artigo seguinte para mais informações sobre a função de formato, que é utilizada para preencher números com zeros.

Especificar o incremento (passo)

Não há argumento para especificar o passo incremental na função enumerar(), mas pode ser alcançado fazendo o seguinte

step = 3
for i, name in enumerate(l):
    print(i * step, name)
# 0 Alice
# 3 Bob
# 6 Charlie
Copied title and URL