2016-12-05 2 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 

는 발전기이 할 수있는 방법이 있나요거야?

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

사용 예제를 :

+0

당신은 발전기에 슬라이스 또는 색인을 적용 할 수 없습니다. 먼저 목록에 강요해야합니다. – DyZ

+0

슬라이서 또는 색인 생성없이 생성기에서 겹치는 쌍을 가져 오는 다른 방법이 있습니까? – Vermillion

+0

링크 된 질문의 맨 위 답변을 사용하지 않은 이유는 무엇입니까? 그것이 본질적으로 필자가 끝내었던 것이다. – SethMMorton

답변

4

나는이 작업을 수행하는 발전기 기능을 만들 것

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