воскресенье, 27 апреля 2014 г.

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

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

(expr1 expr2)
Где нужно учесть следующее:

Выражение всегда заключено в круглые скобки.
В случае, если выражение используется в качестве единственного аргумента при вызове функции, круглые скобки выражения могут совпадать с круглыми скобками вызова функции.
expr2 - итератор, генерирующий значения.
expr1 - операция, которая производится с сгенрированным expr2 значением.

Таким образом, генераторное выражение работает следующим образом:

При очередном вызове expr2, и генерирует следующее исходное значение.
Сгенерированное исходное значение подставляется в expr1.
Сгенерированное expr1 значение возвращается генераторным выражением.
Генераторное выражение ждет следующего вызова


Простейший пример:

print sum(x*(5+x) for x in xrange(10,20,30))

Комментариев нет:

Отправка комментария