TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.3K subscribers
Post #7547 2.79K
💡 Изобретаем свои Comprehensions в Python

Многие знают о list, set и dict comprehensions. Но что, если вам нужен tuple comprehension или frozenset comprehension? В синтаксисе Python их не существует, но мы можем их имитировать.

Главный секрет: Генераторные выражения

Генераторные выражения (generator expressions) — это «строительные блоки», которые позволяют создавать итерируемые объекты на лету без выделения памяти под весь список.

Как это работает:
Если передать генераторное выражение в функцию как единственный аргумент, лишние скобки можно опустить:


# Вместо этого:
all((n > 1 for n in numbers))
# Пишем так:
all(n > 1 for n in numbers)



🛠 Примеры «кастомных» включений

1. Tuple Comprehension

Формально его нет, но передача генератора в конструктор tuple() дает тот же результат:


>>> numbers = [2, 1, 3, 4, 7]
>>> tuple(n**2 for n in numbers)
(4, 1, 9, 16, 49)



2. Frozenset Comprehension

Если вам нужен неизменяемый (immutable) сет:


>>> word_fset = frozenset(w.lower() for w in ["Apple", "Orange", "Apple"])
frozenset({'apple', 'orange'})



3. Counter Comprehension

Класс Counter из модуля collections идеально сочетается с генераторами для быстрого подсчета объектов:


from collections import Counter
words = Counter(w.strip() for w in text.split())



📉 Агрегация через Reducer-функции

Генераторные выражения отлично работают с функциями, которые «сворачивают» (reduce) итерируемый объект в одно значение:
— sum(n**2 for n in numbers) — сумма квадратов.
— "".join(str(n) for n in numbers) — конкатенация строк.
— math.prod(n for n in numbers) — произведение элементов.

📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека питониста

#буст
  • 👍 6
  • 👏 1
  • 😢 1
More from @pyproglib
  1. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  2. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
  3. Sep 19, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  4. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  5. Sep 15, 2026⏱️ Справочник по Big-O в Python Для тех, кто хочет писать не просто работающий, а эффектив…
  6. Sep 14, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
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 →