我可以为您简化这个“delayed” Python 生成器吗?

4
我想要一个生成器,它可以在下一个迭代中返回我发送给它的内容。
>>>g = delayed_generator()
>>>g.send(None)

>>>g.send('this')

>>>g.send('is')
'this'
>>>g.send('delayed')
'is'
>>>g.send('!')
'delayed'

我想出了一种解决方案,涉及三个内部变量,但我想知道是否有更简单的方法。这是我的解决方案:

def delayed_generator():
    y = None
    z = None
    while True:
        x = yield y
        y=x
        y = yield z
        z=y
        z = yield x
        x=z
1个回答

3
您可以保留一个队列:

您可以保留一个队列:

def delayed_generator():
     q = [None, None]
     while True:
         x = yield q.pop(0)
         q.append(x)

g = delayed_generator()
g.send(None), g.send('this'), g.send('is'), g.send('delayed'), g.send('!')

返回值

(None, None, 'this', 'is', 'delayed')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接