Выбор ответа Junior Итераторы и генераторы спрашивают часто обновлено
Повторный обход map
Вопрос
Что выведет код?
nums = map(int, ['1', '2', '3'])
print(sum(nums), sum(nums))
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 6 0. map возвращает итератор.
Варианты ответа
6 0правильный ответ6 60 0TypeError
Разбор
map возвращает итератор. Первый sum прошёл его до конца, второй получает уже пустой итератор и возвращает 0. Ошибки нет: исчерпанный итератор просто сразу бросает StopIteration. Если нужно обойти дважды, сохраните list(map(...)).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Итерируемый объект и итератор: разница
Следующий вопрос
Функции itertools и их результат
Термины по теме
Ещё по теме «Итераторы и генераторы»
- Когда выполняется тело генератора
- Разбить последовательность на пачки
- Рекурсивно развернуть вложенные списки
- Конвейер обработки лога на генераторах
- Свой итерируемый класс, который можно обходить много раз
- Когда выполняется finally в недочитанном генераторе
- Полезные функции itertools
- Ленивые вычисления