Найти в Дзене
sasha.gpgpu

Генераторные выражения python

И это не тоже самое, что генераторы. Это такая же фигня, как и списковые включения (ну почему, почему одни включения, а другие выражения), только в круглых скобочках. Кратко называются genexp и экономят память, потому что отдают элементы по одному, а не сразу скопом, как списковые товарищи.

Распечатывает футболки:

('black', 's')
('black', 'm')
('black', 'l')
('red', 's')
('red', 'm')
('red', 'l')

И этот список ни в какой момент не находится в памяти, генераторное выражение отдает по элементу за раз, распечатываем и забываем. Если обрабатывать нужно что-то грандиозно большое, то очень удобно.

-2

Пример с символами распечатывает следующий лог:

<generator object <genexpr> at 0x0000018762FC2D60>
('$', 'a', 'b', 'c', 'd')

То есть первый codes это генератор, а второй уже завернут в функцию создания кортежа, поэтому выводит кортеж.