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.