Что произойдёт при выполнении it = iter([]) и затем next(it)?
AВернётся
None.BБудет выброшено исключение
StopIteration.CВернётся пустой список.
DБудет выброшено исключение
IndexError.Правильный ответ. Когда элементов больше нет,
next() сигнализирует конец итерации через StopIteration.Разбор
Итератор по пустому списку не содержит элементов. Первый же вызов next(it) не может вернуть значение и поднимает StopIteration. Именно это исключение использует цикл for, чтобы понять, что итерация завершилась.
Проверь себя · 1/3разбор после ответа
Есть
it = iter([5]). Выполнили next(it), а затем next(it, -1). Что вернёт второй вызов next(it, -1)?Ещё вопросы по теме «Итераторы и генераторы»
- Есть `xs = [1, 2, 3]` и `it = iter(xs)`. Сначала выполняется `a = list(it)`, а затем `b = list(it)`. Чему равно `b`?
- Есть `it = iter(['a', 'b'])`. Что вернёт вызов `next(it)`?
- Дан генератор: `def gen(): print('A'); yield 1; print('B'); yield 2`. Сразу после `g = gen()` что будет выведено в консоль?
- Что создаёт выражение `squares = (x * x for x in xs)`?
- В отладке вы сделали `pairs = zip(users, spends)`, затем `debug = list(pairs)`. После этого `d = dict(pairs)` оказался пустым. Почему?
- Все вопросы по «Итераторы и генераторы» →