Grouping lists

aurora00 at gmail.com aurora00 at gmail.com
Fri Sep 9 13:30:22 EDT 2005


I wasn't sure of what itertools.groupby() is good for. But it serves
your purpose.

>>> lst = [1,1,1,1,3,5,1,1,1,1,7,7,7]
>>>
>>> import itertools
>>> i = 0
>>> groups = []
>>> for k, g in itertools.groupby(lst):
...     l = len(list(g))
...     if l == 1:
...         groups.append(i)
...     else:
...         groups.append((i, i+l-1))
...     i += l
...
>>> groups
[(0, 3), 4, 5, (6, 9), (10, 12)]




More information about the Python-list mailing list