Метод состоит в том, чтобы накапливать результаты в контейнере, а затем печатать n-й элемент обратно.
Одна из возможностей - использовать collection.deque () со значением maxlen , установленным на n .
from datetime import timedelta, date
from collections import deque
def daterange(start_date, end_date):
for n in range(int(start_date.day), int((end_date - start_date).days), 90):
yield start_date + timedelta(n)
window = deque([], maxlen=5)
start_date = date(2016, 1, 1)
end_date = date.today()
for single_date in daterange(start_date, end_date):
x = single_date.strftime("%Y-%m-%d")
window.append(x)
print(window[0])
Приведенный выше код выводит пятую самую старую запись.
2018-12-17
Приведенный выше код накапливает самые последние значения в скользящем окне шириной 5 . Самое старое значение находится в позиции 0 , а самое новое значение находится в позиции -1 .
. Вы можете изменить 5 на любое значение из n , что вам нужно.
Надеюсь, это поможет: -)