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)] -- http://mail.python.org/mailman/listinfo/python-list