by shigemk2

当面は技術的なことしか書かない

エキスパートPythonプログラミング ジェネレータ

11-070907.py

ジェネレータは複雑な処理を分解するのにも役立つ。
複数のデータ群を仕様するようなデータ変換アルゴリズムの効率が向上する。

# -*- coding: euc-jp -*-"
def power(values):
    for value in values:
        print('powering %s' % value)
        yield value

def adder(values):
    for value in values:
        print('adding to %s' % value)
        if value % 2 == 0:
            yield value + 3
        else:
            yield value + 2

elements = [1, 4, 7, 9, 12, 19]
res = adder(power(elements))
print next(res)
# powering 1
# adding to 1
# 3
print next(res)
# powering 4
# adding to 4
# 7
print next(res)
# powering 7
# adding to 7
# 9