Практика со встроенными функциями: enumerate()
В этом упражнении вы попрактикуетесь в использовании встроенной функции Python enumerate(). Она удобна для получения списка с индексами. Представьте, что у вас есть список гостей, которые пришли на вечеринку. Список упорядочен по времени прибытия (Джерри пришёл первым, затем Крамер и т. д.):
names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']
Если нужно добавить индекс, отражающий порядок прибытия, можно воспользоваться следующим циклом 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')]
Однако это не самое эффективное решение. Давайте разберёмся, как использовать enumerate(), чтобы сделать код лаконичнее.
Это упражнение является частью курса
Эффективный код на Python
Инструкции к упражнению
- Вместо
for i in range(len(names))обновите цикл for: используйтеiкак переменную индекса,nameкак переменную итератора и применитеenumerate(). - Перепишите предыдущий цикл for с помощью
enumerate()и спискового включения, чтобы создать новый списокindexed_names_comp. - Создайте ещё один список (
indexed_names_unpack), используя символ звёздочки (*) для распаковки объекта enumerate, полученного при вызовеenumerate()дляnames. На этот раз задайте начальный индексenumerate()равным единице, а не нулю.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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)