假设我们希望处理迭代器并希望通过块来处理它.
每个块的逻辑取决于先前计算的块,因此groupby()没有帮助.
在这种情况下,我们的朋友是itertools.takewhile():
while True:
chunk = itertools.takewhile(getNewChunkLogic(), myIterator)
process(chunk)
Run Code Online (Sandbox Code Playgroud)
问题是takewhile()需要经过满足新块逻辑的最后一个元素,因此"吃掉"下一个块的第一个元素.
有各种解决方案,包括包装或àC ungetc()等.
我的问题是:有一个优雅的解决方案吗?