2013-09-27 3 views
0

Этот вопрос был дан ранее для Python 2.x. Я не могу заставить его работать в Python 3.Python 3: найти предыдущий/следующий элемент in for loop

я изменил izip к zip, потому что я понял, izip был удален из Python 3.

from itertools import tee, islice, chain 

def previous_and_next(some_iterable): 
    prevs, items, nexts = tee(some_iterable, 3) 
    prevs = chain([None], prevs) 
    nexts = chain(islice(nexts, 1, None), [None]) 
    print(zip(prevs, items, nexts)) 

a = list(range(1,10)) 

previous_and_next(a) 

Бег это дает мне <zip object at 0x7f338e4ea638>

Что случилось с этим кодом?

ответ

1

<zip object at 0x7f338e4ea638> - итератор. Для получения позиций в итераторе необходимо передать его tuple() или list(). В частности, заменить print(zip(prevs, items, nexts)) на print(tuple(zip(prevs, items, nexts))) или print(list(zip(prevs, items, nexts)))