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 de exercício
- Em vez de usar
for i in range(len(names))
, atualize o loop for para usari
como a variável de índice ename
como 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 preenchendo 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)