Prática incorporada: enumerate()
Neste exercício, você praticará o uso da função integrada do Python enumerate(). Essa função é útil para obter uma lista indexada. Por exemplo, suponha que você tenha uma lista de pessoas que chegaram a uma festa que você está organizando. A lista é ordenada por chegada (Jerry foi o primeiro a chegar, seguido por Kramer, etc.):
names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']
Se você quisesse anexar um índice que representasse a ordem de chegada de uma pessoa, poderia usar o seguinte loop for:
indexed_names = []
for i in range(len(names)):
index_name = (i, names[i])
indexed_names.append(index_name)
[(0,'Jerry'),(1,'Kramer'),(2,'Elaine'),(3,'George'),(4,'Newman')]
Porém, essa não é a solução mais eficiente. Vamos explorar como você pode usar o site enumerate() para tornar isso mais eficiente.
Este exercício faz parte do curso
Como escrever um código Python eficiente
Instruções do exercício
- Em vez de usar
for i in range(len(names)), atualize o loop for para usaricomo a variável de índice enamecomo a variável de iterador e useenumerate(). - Reescreva o loop for anterior usando
enumerate()e a compreensão de lista para criar uma nova lista,indexed_names_comp. - Crie outra lista (
indexed_names_unpack) usando o caractere estrela (*) para desempacotar o objeto enumerado criado com o uso deenumerate()emnames. Desta vez, inicie o índice paraenumerate()em um, em vez de zero.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Rewrite the for loop to use enumerate
indexed_names = []
for ____,_____ in ____(names):
index_name = (i,name)
indexed_names.append(index_name)
print(indexed_names)
# Rewrite the above for loop using list comprehension
indexed_names_comp = [(____,____) for i,name in ____(names)]
print(indexed_names_comp)
# Unpack an enumerate object with a starting index of one
indexed_names_unpack = [____(names, ____)]
print(indexed_names_unpack)