Python是否有任何内置或标准库的迭代器预览机制?

2024-03-29 01:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

原则上,为迭代器编写一个包装器非常容易,它允许任意的向前看,一些问题已经专门针对这个问题(例如Using lookahead with generators

然而,考虑到几乎每一个非琐碎的文件解析都会从这样一个工具中获益,对标准库的疏忽似乎太明显了;是否真的没有允许偷看的内置或标准库机制

具体地说,我通常需要在函数调用之间进行窥视:子函数应该能够检查任意数量的即将出现的元素,而无需将它们从迭代器中移除——本质上是一种队列数据类型,其中元素是从迭代器中懒洋洋地获取的

在某些情况下,collections.dequeitertools.tee可用于构建解决方案。然而,为了代码的可读性,它们是不利的


Tags: 文件工具元素标准数量队列with内置
1条回答
网友
1楼 · 发布于 2024-03-29 01:53:08

没有


我经常发现自己用^{} Recipe来展望未来

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)

for item, peek in pairwise(iterable):
    ...

或者简单地将iterable转换成一个序列(如果还没有),并使用索引查找

for index, item in enumerate(sequence):
    try:
        peek = sequence[index+1]
    except IndexError:
        peek = None

相关问题 更多 >