Identify groups of continuous numbers in a list

EDIT 2: To answer the OP new requirement ranges = [] for key, group in groupby(enumerate(data), lambda (index, item): index – item): group = map(itemgetter(1), group) if len(group) > 1: ranges.append(xrange(group[0], group[-1])) else: ranges.append(group[0]) Output: [xrange(2, 5), xrange(12, 17), 20] You can replace xrange with range or any other custom class. Python docs have a … Read more