ChatCrawlerпоиск по публичному Telegram Открыть приложение
P

Python Community | Chat

сообщение · 2025-06-25 12:57 UTC
I
🐍 Python-задача: что выведет этот код с вложенными генераторами? gen = (x for x in range(3)) def wrap(g): return (x * 2 for x in g) gen2 = wrap(gen) print(list(gen)) print(list(gen2)) 🔍 Варианты: • a) [0, 1, 2], [0, 2, 4] • b) [0, 1, 2], [] • c) [], [0, 2, 4] • d) [0, 1, 2], Ошибка 💡 Разбор: - `gen = (x for x in range(3))` — генератор 0, 1, 2 - `wrap(gen)` — создаёт **новый генератор**, который берёт значения из `gen` и умножает на 2 Но генераторы **исчерпаемы**: после первого полного прохода `list(gen)` → `gen` становится пустым Значит: - `list(gen)` → `[0, 1, 2]` - `gen2 = wrap(gen)` теперь ссылается на **пустой** `gen` - `list(gen2)` → `[]` ✅ **Правильный ответ: b) `[0, 1, 2]`, `[]`** 🧠 **Вывод:** если оборачиваешь генератор — не "прожигай" его до передачи дальше. Генераторы нельзя перезапустить или "перемотать". 🛠️ Совет: если данные нужны повторно — сохрани их в список: ```python data = list(gen) ``` или используй itertools.tee для разветвления итератора. @Python_Community_ru
941 ·

Все сообщения за 25 июня 2025 · Вся лента · оригинал в Telegram

Открыть в Telegram Каталог площадок Искать в ChatCrawler

Слепок открытой публичной ленты из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог