def neighborhood(iterable):
    iterator = iter(iterable)
prev_item = None
current_item = next(iterator)
for next_item in iterator:
    yield prev_item, current_item, next_item
prev_item = current_item
current_item = next_item
yield prev_item, current_item, None
Как получить доступ к предыдущему/следующему элементу во время цикла?