Практика з вбудованими: 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()і list comprehension, щоб створити новий список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)