Выбор ответа Middle Итераторы и генераторы обновлено

Является ли range итератором

Вопрос

Что верно про r = range(10)?

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

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

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

Коротко

Правильный ответ: r итерируемый, не итератор: next(r) даст TypeError. range это ленивая неизменяемая последовательность: хранит только start, stop, step.

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

  1. r итератор: после одного обхода он пуст
  2. r это список из 10 чисел, как в Python 2
  3. r генератор, поэтому len(r) недоступен
  4. r итерируемый, не итератор: next(r) даст TypeErrorправильный ответ

Разбор

range это ленивая неизменяемая последовательность: хранит только start, stop, step. У неё есть len, индексирование, срезы и быстрый in для целых. Итератором она не является: next(range(10)) падает, нужно iter(range(10)). Обходить можно сколько угодно раз, списком она не является с Python 3.

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

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

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