Neal Becker wrote:
Is there any canned iterator adaptor that will
transform:
in = [1,2,3....]

into:
out = [(1,2,3,4), (5,6,7,8),...]

That is, each time next() is called, a tuple of the next N items is returned.





An option, might be better since it handles infinite list correctly:

>>> lst = [1, 4, 2, 5, 7, 3, 2, 5, 7, 3, 2, 6, 3, 2, 6, 8, 4, 2]
>>> d = 4
>>> for x in itertools.groupby(enumerate(lst), lambda x: x[0] // d):
...     print(list(x[1]))
...
[(0, 1), (1, 4), (2, 2), (3, 5)]
[(4, 7), (5, 3), (6, 2), (7, 5)]
[(8, 7), (9, 3), (10, 2), (11, 6)]
[(12, 3), (13, 2), (14, 6), (15, 8)]
[(16, 4), (17, 2)]
>>> [list(x[1]) for x in itertools.groupby(enumerate(lst), lambda x: x[0] // d)] [[(0, 1), (1, 4), (2, 2), (3, 5)], [(4, 7), (5, 3), (6, 2), (7, 5)], [(8, 7), (9, 3), (10, 2), (11, 6)], [(12, 3), (13, 2), (14, 6), (15, 8)], [(16, 4), (17, 2)]]

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to