TGViewer
Python tests Python tests @python_testit · 6.9K subscribers
Post #1184 1.34K

Forwarded from Python/ django

🐍 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 для разветвления итератора.

@pythonl
More from @python_testit
  1. Sep 6, 2026🐍 Python считает эти даты равными. Хотя между ними целый час В ночь перевода часов время…
  2. Aug 14, 2026Post #1269
  3. Aug 14, 2026photo post
  4. Aug 14, 2026🔥 Python + AI без игрушечных демок. Курс для тех, кто хочет собирать рабочие системы. Ste…
  5. Jul 22, 2026Post #1266
  6. Jul 22, 2026photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →