objectif
Inclure/ignorer tant qu’une condition est vraie sur le flux.
code minimal
import itertools
xs = [1,2,3,0,4]
head = list(itertools.takewhile(lambda x: x>0, xs))
tail = list(itertools.dropwhile(lambda x: x>0, xs))
print(head == [1,2,3] and tail == [0,4]) # attendu: True
utilisation
import itertools
lines = ["#c1", "#c2", "data", "more"]
data = list(itertools.dropwhile(lambda s: s.startswith("#"), lines))
print(data[0] == "data")
variante(s) utile(s)
import itertools
print(list(itertools.takewhile(str.isalpha, "abc123")) == ["a","b","c"])
notes
- Les prédicats sont évalués séquentiellement; stop dès que la condition échoue (takewhile).
- Combinez avec islice et chain pour des pipelines lisibles.