svleeuwen
3/1/2016 - 12:29 PM

Helper method for looping through the previous, current and next value of an iterable

Helper method for looping through the previous, current and next value of an iterable

from itertools import zip, tee, chain, islice

def prev_curr_next(iterable):
    prev, curr, nxt = tee(iterable, 3)
    prev = chain([None], prev)
    nxt = chain(islice(nxt, 1, None), [None])
    return zip(prev, curr, nxt)

"""
Usage:

for prev, curr, nxt in prev_curr_next('abcde'):
    print prev, curr, nxt

Output: 

prev None curr a next b
prev a curr b next c
prev b curr c next d
prev c curr d next e
prev d curr e next None
"""