title: Voisinage en Python

J’ai besoin de connaître les articles précédents et suivants [pour le blog](/david/blog/) et maintenant pour ces notes, je suis arrivé à la version suivante en Python qui produit un générateur à partir d’un itérable grâce au mot-clé `yield` :

    :::python
    def neighborhood(iterable, first=None, last=None):
        """
        Yield the (previous, current, next) items given an iterable.

        You can specify a `first` and/or `last` item for bounds.
        """
        iterator = iter(iterable)
        previous = first
        current = iterator.next()  # Throws StopIteration if empty.
        for next in iterator:
            yield (previous, current, next)
            previous = current
            current = next
        yield (previous, current, last)

Il me fallait surtout la possibilité de spécifier un premier/dernier item pour avoir un lien sur [le premier article publié](/david/blog/2012/rappel/) vers les pensées plus anciennes ou [la première note](/david/stream/2015/01/01/) vers les tweets archivés. Il y a [une suite](/david/stream/2015/02/03/) et [une fin](/david/stream/2015/02/12/) à cette série.
