相关疑难解决方法(0)

如何映射或嵌套Python 2.7函数生成器?

如果我在Python 2.7中有一个非常简单(尽管可能非常复杂)的函数生成器,就像这样:

def accumulator():
    x = yield 0
    while True:
        x += yield x
Run Code Online (Sandbox Code Playgroud)

哪个可以使用,如下所示:

>>> a = accumulator()
>>> a.send(None)
0
>>> a.send(1)
1
>>> a.send(2)
3
>>> a.send(3)
6
Run Code Online (Sandbox Code Playgroud)

除了乘以2之外,另一个产生相同结果的函数生成器的简单包装器是什么?上面的函数生成器很简单,但请假设复制粘​​贴太复杂.我正在尝试一些事情,比如:

def doubler():
    a = accumulator()
    a.send(None)
    y = yield 0
    while True:
        y = 2 * a.send(yield y)
Run Code Online (Sandbox Code Playgroud)

或者,想象一些更简单的事情:

def doubler():
    a = accumulator()
    a.send = lambda v: 2 * super(self).send(v)
    return a
Run Code Online (Sandbox Code Playgroud)

两者都是可怕的破坏,所以我不会分享语法错误,但它可以说明我正在尝试做什么.

理想情况下,我想得到一些东西,比如:

>>> d = doubler()
>>> d.send(None)
0
>>> d.send(1)
2
>>> d.send(2)
6 …
Run Code Online (Sandbox Code Playgroud)

python generator python-2.7

5
推荐指数
1
解决办法
199
查看次数

标签 统计

generator ×1

python ×1

python-2.7 ×1