Experts want your help to Optimize code:
def foo(start, end): Ā Ā Ā index = 0 Ā Ā Ā is_lower = False Ā Ā Ā while index < (len(start)): Ā Ā Ā Ā Ā Ā Ā if is_lower and start[index] == '0': Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā break Ā Ā Ā Ā Ā Ā Ā if not is_lower and start[index] < end[index]: Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā first_lower = index Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā Ā is_lower = True Ā Ā Ā Ā Ā Ā Ā index += 1 Ā Ā Ā return index-1, first_lower start = '37282842000' end = '37282871999' result = [] while int(start) < int(end): Ā Ā Ā index, first_lower = foo(start, end) Ā Ā Ā range_end = index > first_lower and 10 or int(end[first_lower]) Ā Ā Ā for x in range(int(start[index]), range_end): Ā Ā Ā Ā Ā Ā Ā result.append(start[:index] + str(x) ) Ā Ā Ā if range_end == 10: Ā Ā Ā Ā Ā Ā Ā start = str(int(start[:index])+1)+'0'+start[index+1:] Ā Ā Ā else: Ā Ā Ā Ā Ā Ā Ā start = start[:index] + str(range_end) + start[index+1:] print (result) ~~~~ How to modify above code to give below output: 37282842 37282843 37282844 37282845 37282846 37282847 37282848 37282849 3728285 3728286 37282870 37282871