Есть it = iter([5]). Выполнили next(it), а затем next(it, -1). Что вернёт второй вызов next(it, -1)?
AЦелое число
5 повторноBЗначение по умолчанию
-1CПустое значение
NoneDИсключение
StopIterationПравильный ответ. Если у
next() указан второй аргумент, он возвращается вместо StopIteration при исчерпанном итераторе.Разбор
Первый next(it) забрал единственный элемент 5 и продвинул итератор за конец. Когда у next указан второй аргумент-«дефолт», на исчерпанном итераторе вместо исключения возвращается это значение. Поэтому второй next(it, -1) отдаёт -1. Без второго аргумента вызов поднял бы StopIteration, но в задаче он явно передан. None появляется только если его передать вторым аргументом самому, а первый элемент списка повторно не возвращается.
Проверь себя · 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)` оказался пустым словарём. Почему?
- Все вопросы по «Итераторы и генераторы» →