Python. Пронумеровать элементы коллекции
Одна уважаемая компания заказала вам разработку теста для соискателей на позицию «дизайнер продукта». Есть список вопросов с вариантами ответа:
survey = {
"Чем известен Джони Айв?": [
"Придумал анимированные эмодзи",
"Снялся в фильме про белую комнату",
"Изобрёл мышку с зарядкой в пузе",
],
"Почему важно надувать щёки?": [ ... ],
"Сколько у вас статей про дизайн-системы?": [ ... ],
}
Вы написали код, который показывает на экране каждый вопрос с вариантами ответа:
for question, answers in survey.items():
print(question)
print_answers(answers)
Но есть нюанс — варианты должны быть пронумерованы. Как бы это сделать?
def print_answers(answers):
i = 1
for answer in answers:
print(f"{i}: {answer}")
i += 1
Чем известен Джони Айв?
1: Придумал анимированные эмодзи
2: Снялся в фильме про белую комнату
3: Изобрёл мышку с зарядкой в пузе
Да, но нет. Очень часто, когда видите в коде i = ..
и затем i += 1
— это красный флаг. Лучше так:
def print_answers(answers):
for idx, answer in enumerate(answers, start=1):
print(f"{idx}: {answer}")
enumerate()
возвращает итератор, который при каждом обращении выдаёт пару из счётчика и соответствующего ему элемента последовательности. А аргумент start
указывает, с какого числа стартовать счётчик (по умолчанию — с нуля).
P.S. Если это для вас слишком просто, представьте себя сумасшедшим любителем однострочников и попробуйте расшифровать такое:
deque(map(print, map(lambda item: f"{item[0]}: {item[1]}", enumerate(answers, start=1))), maxlen=0)
★ Подписывайтесь на новые заметки.