Use itertools.islice on a list iterator.
In [12]: a = range(10) In [13]: b = iter(a) In [14]: from itertools import islice In [15]: l = [3, 5, 2] In [16]: [list(islice(b, x)) for x in l] Out[16]: [[0, 1, 2], [3, 4, 5, 6, 7], [8, 9]]
or:
In [17]: b = iter(a) In [18]: [[next(b) for _ in range(x)] for x in l] Out[18]: [[0, 1, 2], [3, 4, 5, 6, 7], [8, 9]]
source share