我不知道如何展望Python生成器中的一个元素。我一看就不见了。
我的意思是:
gen = iter([1,2,3])
next_value = gen.next() # okay, I looked forward and see that next_value = 1
# but now:
list(gen) # is [2, 3] -- the first value is gone!
下面是一个更真实的例子:
gen = element_generator()
if gen.next_value() == 'STOP':
quit_application()
else:
process(gen.next())
有谁能帮我写一个发电机,你可以向前看一个元素吗?
好吧——晚了两年——但我遇到了这个问题,没有找到任何令我满意的答案。提出了这个元生成器:
结果:
也就是说,在迭代过程中,您随时可以访问列表中的下一项。
为了完整起见,^{} package (可能应该是任何Python程序员工具箱的一部分)包含实现此行为的
peekable
包装器。正如the documentation中的代码示例所示:尽管文档显示了Python2语法,但该包与Python2和3都兼容。
Python生成器API是一种方法:您不能回推已读的元素。但是您可以使用itertools module创建一个新的迭代器,并预先设置元素:
相关问题 更多 >
编程相关推荐