2016-12-05 8 views
0

ジェネレータ内の隣接する値の重複するペアにアクセスしたいと思います。ジェネレータで隣接するペアを反復処理する

それがリストだった場合、私はthis questionからです

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

をあなたは発電機にスライスまたはインデックスを適用することはできません。あなたは最初にそれらをリストに強制する必要があります。 – DyZ

+0

ジェネレーターで重なり合うペアを取得する別の方法はありますか? – Vermillion

+0

リンクした質問の先頭の答えを使用していないのはなぜですか?それは本質的に私が書いたものです。 – SethMMorton

答えて

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]