我想从迭代器中取出第一个元素,分析它,然后把它放回原处,像没碰过一样和迭代器一起工作。在
现在我写道:
def prepend_iterator(element, it):
yield element
for element in it:
yield element
def peek_first(it):
first_element = next(it)
it = prepend_iterator(first_element, it)
return first_element, it
first_element, it = peek_first(it)
analyse(first_element)
continue_work(it)
有可能写得更好/更短?在
这里有一个例子itertools.tee
输出
^{pr2}$注意,只有当您将非
None
值往后推时,这才有效。如果您实现生成器函数(这就是您所拥有的)以便关心
yield
的返回值,那么您可以在生成器上“向后推”(使用.send()
):在这里,您将打印来自}(如果您调用它)的返回值。在
^{pr2}$for
循环的x
和{这只会让你后退一次。如果你想往后推更多次,你可以这样做:
产生:
相关问题 更多 >
编程相关推荐