Голова не работает после рабочего дня, но помоему можно попробовать что-то такое:
for num in range(0, 4):
while b[num] <= e[num]:
# yield
b[num] += 1
if b[num] <= e[num]:
b[num + 1] = beggining[num + 1]
Скорее всего, код с ошибками. Также под вопросом и "упрощение функции".
И постарайтесь именовать переменные более читаемо.