私はPython反復子を取り込み、イテレータの反復子を返す関数を作成しようとしています。各項目は元の反復子からの固定サイズの項目です。言い換えれば:Pythonの反復子をページ分割する
paginate([a, b, c, d], 2) -> [[a,b],[c,d]]
私のコード、これまでに動作しますが、イテレータの長さはページサイズで割り切れる場合は長さゼロのページを返します。
def paginate(iterator, pageSize):
hasMore = True
def pageIter():
print (1)
try:
for _ in range(pageSize):
yield next(iterator)
except StopIteration as e:
nonlocal hasMore
hasMore = False
raise e
def pager():
while hasMore:
yield pageIter()
if not hasMore:
raise StopIteration()
return pager()
私はitertoolsのレシピを持っていることを承知していますが、そのコードはNone
sの不完全なページを埋めるように思われます。