НачатьНачать бесплатно

Практика со встроенными функциями: 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)
Редактировать и запускать код