← retour aux snippets

itertools.islice: pagination d'un iterable

Prendre une fenêtre d'éléments d'un iterable potentiellement infini.

python itertools #itertools#islice#pagination

objectif

Prendre une fenêtre d’éléments d’un iterable potentiellement infini.

code minimal

import itertools
page = list(itertools.islice(range(1000), 10, 15))
print(page == [10,11,12,13,14])  # attendu: True

utilisation

import itertools
def pages(iterable, size, page_index):
    start = page_index * size
    return list(itertools.islice(iterable, start, start+size))
print(pages(range(20), 4, 2) == [8,9,10,11])

variante(s) utile(s)

import itertools
print(tuple(itertools.islice(range(3), 0, None, 2)) == (0,2))

notes

  • islice n’évalue pas en amont; idéal pour streams ou générateurs.
  • Utilisez un step pour échantillonner régulièrement.