問題は簡単です。リストの各要素と次の要素をペアで繰り返します(最後の要素を最初の要素でラップします)。
私はそれを行うための2つの非Python的な方法について考えました:
def pairs(lst):
n = len(lst)
for i in range(n):
yield lst[i],lst[(i+1)%n]
と:
def pairs(lst):
return zip(lst,lst[1:]+[lst[:1]])
期待される出力:
>>> 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)
>>>
これを行うためのよりPython的な方法についての提案はありますか?多分私が聞いたことがない事前定義された関数がそこにありますか?
また、より一般的なn-fold(ペアの代わりにトリプレット、カルテットなどを使用)バージョンも興味深いかもしれません。