あなたはitertools.cycle
にitertools.islice
を使用することができます。反復可能でcycle
オブジェクトを作成し、slice
オブジェクトあなたのウィンドウサイズi
使用:
from itertools import cycle
from itertools import islice
l = [1,2,3,4,5,6,7]
t = 5; i = 3
c = cycle(l)
r = [list(islice(c, i)) for _ in range(t)] # range appears here
# [[1, 2, 3], [4, 5, 6], [7, 1, 2], [3, 4, 5], [6, 7, 1]]
をあなたがi
の異なる非負の値のためにこれを適用することができ、かつi
はあなたのリストの長さよりも大きい場合であっても、 :
i = 10
r = [list(islice(c, i)) for _ in range(t)]
print(r)
# [[1, 2, 3, 4, 5, 6, 7, 1, 2, 3], [4, 5, 6, 7, 1, 2, 3, 4, 5, 6], [7, 1, 2, 3, 4, 5, 6, 7, 1, 2], [3, 4, 5, 6, 7, 1, 2, 3, 4, 5], [6, 7, 1, 2, 3, 4, 5, 6, 7, 1]]
itertoolsモジュールは便利です。例:http://stackoverflow.com/questions/2167868/getting-next-element-while-cycling-through-a-list – Mel