Выбор ответа Junior Итераторы и генераторы спрашивают часто обновлено

Повторный обход map

Вопрос

Что выведет код?

nums = map(int, ['1', '2', '3'])
print(sum(nums), sum(nums))

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 6 0. map возвращает итератор.

Варианты ответа

  1. 6 0правильный ответ
  2. 6 6
  3. 0 0
  4. TypeError

Разбор

map возвращает итератор. Первый sum прошёл его до конца, второй получает уже пустой итератор и возвращает 0. Ошибки нет: исчерпанный итератор просто сразу бросает StopIteration. Если нужно обойти дважды, сохраните list(map(...)).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме