J'essaye de créer une fonction qui accepte un itérateur python et renvoie un itérateur d'itérateurs, chaque élément étant un ensemble d'éléments de taille fixe provenant de l'itérateur d'origine. En d'autres termes:Pagination de l'itérateur en Python
paginate([a, b, c, d], 2) -> [[a,b],[c,d]]
Mon code, travaux jusqu'à présent, mais renvoie une page de longueur nulle si la longueur du iterator est divisible par la taille de la page.
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()
Je sais que itertools a une recette, mais ce code semble remplir des pages incomplètes avec None
s.