Есть it = iter([5]). Выполнили next(it), а затем next(it, -1). Что вернёт второй вызов next(it, -1)?
A5
B-1
C
NoneDИсключение
StopIteration.Правильный ответ.
next(it, default) возвращает default вместо StopIteration, если iterator исчерпан.Разбор
После первого next(it) единственный элемент 5 уже прочитан. Второй вызов next(it, -1) не может получить новое значение, но вместо исключения вернёт значение по умолчанию — -1. Это удобно, когда хотите безопасно попытаться взять элемент без обработки StopIteration.
Проверь себя · 1/3разбор после ответа
Вы фильтруете большой поток строк
rows. Почему генератор def valid(rows): for row in rows: if is_valid(row): yield row часто лучше по памяти, чем [row for row in rows if is_valid(row)]?Ещё вопросы по теме «Итераторы и генераторы»
- Есть `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)` оказался пустым. Почему?
- Все вопросы по «Итераторы и генераторы» →