Русский
Открыть в Telegram

Пост Как узнать размер генератора в Python?

6 ноября 2025
Б
Библиотека Python разработчика | Книги по питону
Как узнать размер генератора в Python? В Python часто возникает задача определить размер генератора без необходимости извлечения всех его значений. Это полезно, если вы работаете с большими потоками данных и хотите избежать избыточного расхода памяти. Пример с len() Некоторые итераторы, такие как range, поддерживают вызов len(): len(range(10000)) # 10000 Однако генераторы не имеют длины, и попытка вызвать len() вызовет ошибку: gen = (x ** 2 for x in range(10000)) len(gen) # TypeError: object of type 'generator' has no len() Стандартное решение: преобразование в список Один из способов получить размер генератора — это преобразовать его в список: gen = (x ** 2 for x in range(10000)) print(len(list(gen))) # 10000 Этот подход работает, но имеет серьёзный недостаток: он требует загрузить все значения генератора в память. Если генератор очень большой, это может привести к нехватке памяти. Более эффективный подход: подсчёт с помощью sum Чтобы избежать лишнего расхода памяти, можно подсчитать количество элементов в генераторе с использованием sum(): gen = (x ** 2 for x in range(10000)) print(sum(1 for _ in gen)) # 10000 Этот метод обходит генератор "лениво", не создавая дополнительных списков, что делает его идеальным для работы с большими потоками данных. Резюме - Используйте len() только для итераторов, поддерживающих его (например, range). - Для генераторов избегайте преобразования в список, если важна экономия памяти. - Используйте sum(1 for _ in gen) для эффективного подсчёта элементов генератора. 📲 Мы в MAX 👉@BookPython
8 · 1.8K ·

Рядом в ленте

ББиблиотека Python разработчика | Книги по питонуРаспаковка параметров функций в Python 2 и 3 В Python 2 существовала интересная возможность распаковывать параметры функций прямо в их определении. Пример: def ББиблиотека Python разработчика | Книги по питонуПочему range() в Python использует полуоткрытые интервалы? Функция range() в Python работает с полуоткрытыми интервалами. Например, range(2, 10) задаёт числа в
это сообщение
ББиблиотека Python разработчика | Книги по питонуКогда вам нужно очистить список в Python, вы, скорее всего, используете lst = []. Однако на самом деле вы просто создаёте новый пустой список и присваиваете егоББиблиотека Python разработчика | Книги по питонуПагинация — это стандартная задача, с которой ежедневно сталкиваются тысячи разработчиков. Если вы используете реляционную базу данных, то можно задать смещение
ББиблиотека Python разработчика | Книги по питонуБиблиотека Python разработчика | Книги по питону@BookPython · канал · Технологии
17 943подписчиков725средний охват поста
Лента площадки Открыть в Telegram

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

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