Iteruj nad parami na liście (cyklicznie) w Pythonie
Problem jest prosty, chcę iterować po każdym elemencie listy i następnym w parach (zawijając ostatni w pierwszy).
Pomyślałem o dwóch niepotwierdzonych sposobach:
def pairs(lst):
n = len(lst)
for i in range(n):
yield lst[i],lst[(i+1)%n]
i:
def pairs(lst):
return zip(lst,lst[1:]+[lst[:1]])
oczekiwany wynik:
>>> for i in pairs(range(10)):
print i
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
(5, 6)
(6, 7)
(7, 8)
(8, 9)
(9, 0)
>>>
jakieś sugestie o bardziej pytonicznym sposobie robienia tego? może istnieje predefiniowana funkcja, o której nie słyszałem?
interesująca może być również bardziej ogólna wersja n-krotna (z tripletami, kwartetami itp. zamiast par).