Иногда, в простых случаях, можно не писать функцию-генератор, а обойтись генераторным выражением.
Выражение всегда заключено в круглые скобки.
В случае, если выражение используется в качестве единственного аргумента при вызове функции, круглые скобки выражения могут совпадать с круглыми скобками вызова функции.
expr2 - итератор, генерирующий значения.
expr1 - операция, которая производится с сгенрированным expr2 значением.
Таким образом, генераторное выражение работает следующим образом:
При очередном вызове expr2, и генерирует следующее исходное значение.
Сгенерированное исходное значение подставляется в expr1.
Сгенерированное expr1 значение возвращается генераторным выражением.
Генераторное выражение ждет следующего вызова
Простейший пример:
(expr1 expr2)
Где нужно учесть следующее:
Выражение всегда заключено в круглые скобки.
В случае, если выражение используется в качестве единственного аргумента при вызове функции, круглые скобки выражения могут совпадать с круглыми скобками вызова функции.
expr2 - итератор, генерирующий значения.
expr1 - операция, которая производится с сгенрированным expr2 значением.
Таким образом, генераторное выражение работает следующим образом:
При очередном вызове expr2, и генерирует следующее исходное значение.
Сгенерированное исходное значение подставляется в expr1.
Сгенерированное expr1 значение возвращается генераторным выражением.
Генераторное выражение ждет следующего вызова
Простейший пример:
print sum(x*(5+x) for x in xrange(10,20,30))
Комментариев нет:
Отправить комментарий