Только для итерации вы должны использовать xrange over range, поскольку xrange просто возвратит итератор, тогда как range создаст фактический объект списка, содержащий весь диапазон целых чисел от первого до последнего. 1 (что, очевидно, менее эффективно, когда все, что вам нужно, это простой цикл for):
for i in xrange(current,finish+1, timedelta(1)):
do_stuff(i)
Кроме того, есть перечисление, которое возвращает объект перечисления, который будет давать увеличивающееся количество и значение коллекции, т.е.:
l = ["a", "b", "c"]
for ii, value in enumerate(l):
print ii, value
Результат:
0 a
1 b
2 c