迭代生成器中的相邻对

时间:2016-12-05 18:31:30

标签: python python-3.x generator

我想在生成器中访问重叠的相邻值对。

如果是列表,我可以使用

a = [5, 7, 11, 4, 5]
for v, w in zip(a[:-1], a[1:]):
    print [v, w]

来自this question

但是当我尝试用生成器做同样的事情时,我得到了错误

TypeError: 'generator' object is not subscriptable

有没有办法为发电机做这个?

1 个答案:

答案 0 :(得分:4)

我会创建一个生成器函数来执行此操作:

def adjacent_pairs(it):
    it = iter(it)
    a, b = next(it), next(it)
    while True:
        yield a, b
        a, b = b, next(it)

使用示例:

def gen():
    yield 5
    yield 7
    yield 11
    yield 4
    yield 5
for v, w in adjacent_pairs(gen()):
    print [v, w]