我想在生成器中访问重叠的相邻值对。
如果是列表,我可以使用
a = [5, 7, 11, 4, 5]
for v, w in zip(a[:-1], a[1:]):
print [v, w]
但是当我尝试用生成器做同样的事情时,我得到了错误
TypeError: 'generator' object is not subscriptable
有没有办法为发电机做这个?
答案 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]