Привет.
Я сейчас нахожусь на той стадии любви к генераторам, что использую их сильно чаще, чем списки. Буквально везде одни yield и yield from
Списки использую только в том случае, если нужно проитерироваться по последовательности один раз, а потом ещё раз. Или если нужно отправить список по API и сделать из него JSON. То есть, даже если итерация около-параллельная, например, с отставанием в пару элементов, я использую itertools.tee
Я знаю, что генераторы медленней списков (хотя, адекватных бэнчей я не смог придумать, потому что генераторы ленивые и как протестировать именно время, затрачиваемое на yield — непонятно). Хотя, создание списка append'ами плюс его обработка обычно дольше:
Я знаю, что почти все списки, которые я бы создал вместо генераторов со свистом влезли бы в память, но я не могу остановиться экономить эту память.
Подскажите советом, когда адекватно использовать генераторы, а когда — глупо?