python - 我可以简化这个 "delayed"python 生成器吗?

标签 python generator

我想要一个生成器来返回我在以下迭代中发送给它的内容:

>>>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

最佳答案

你可以保留一个队列:

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')

关于python - 我可以简化这个 "delayed"python 生成器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48365635/

相关文章:

python - 在 Tensorflow 中删除张量的维度

使用 DAL 的 python app engine restful 服务

ruby-on-rails - Ruby 如何使用 erb 解释生成器模板而不引发错误?

Python对控制流使用异常被认为是不好的?

php - Laravel 生成器给出 : Cannot redeclare generatorFunction()

python - 美丽汤错误 : '<class ' bs4. 元素。标签'>' object has no attribute ' 内容'?

Python:从末尾遍历列表找到第一个满足条件的元素

python - 根据列表过滤要删除的 pandas 数据框

python - 代码创建生成器对象,但我想要一个列表

javascript - 需要一个 Java 生成器(如果可能的话,使用正则表达式)