def create_intervals(data): """ Create a list of intervals out of set of ints. """ results = [] data = sorted(data) start = None current_number = None for number in data: if start is None: start = number current_number = start continue if number != start and number != (current_number + 1): results.append((start, current_number)) start = number current_number = number if start is not None: results.append((start, current_number)) return iter(results) if __name__ == '__main__': # These "asserts" using only for self-checking and not necessary for auto-testing res = create_intervals(iter(sorted(list({1, 2, 3, 4, 5, 7, 8, 12})))) assert hasattr(res, '__iter__'), "your function should return the iterator object" assert hasattr(res, '__next__'), "your function should return the iterator object" assert list(create_intervals(iter(sorted(list({1, 2, 3, 4, 5, 7, 8, 12}))))) == [ (1, 5), (7, 8), (12, 12)], "First" assert list(create_intervals(iter(sorted(list({1, 2, 3, 6, 7, 8, 4, 5}))))) == [ (1, 8)], "Second" assert list(create_intervals(iter([]))) == [], "Empty" print('Almost done! The only thing left to do is to Check it!')