iterableをN個づつに分割してジェネレータにして返します。 コメントで教えていただいたリンクを参考に改良しました。3行まで短くなり無限リストも扱えてウハウハです。 pythonでイテレータをチャンクに分割する import itertools def splitparN(iterable, N=3): for i, item in itertools.groupby(enumerate(iterable), lambda x: x[0] // N): yield (x[1] for x in item) for x in splitparN(range(12)): print(tuple(x)) """ 出力: (0, 1, 2) (3, 4, 5) (6, 7, 8) (9, 10, 11) """ eternal = libs.splitparN(itertools.cycle(