Pairwise circular Python 'for' loop

Is there a nice Pythonic way to loop over a list, retuning a pair of elements? The last element should be paired with the first.

So for instance, if I have the list [1, 2, 3], I would like to get the following pairs:

  • 1 - 2
  • 2 - 3
  • 3 - 1

A Pythonic way to access a list pairwise is: zip(L, L[1:]). To connect the last item to the first one:

    >>> L = [1, 2, 3]
    >>> zip(L, L[1:] + L[:1])
    [(1, 2), (2, 3), (3, 1)]

From: stackoverflow.com/q/36917042

Back to homepage or read more recommendations: