немного короче: вы могли бы избавиться от while
l oop следующим образом
from datetime import date, timedelta
start = date(2020, 1, 1)
days_to_add = 11
dates_to_skip = [date(2020, 1, 6), date(2020, 1, 7), date(2020, 1, 14)]
skipped = 0
for days_add in range(days_to_add+1):
if start + timedelta(days=days_add) in dates_to_skip:
skipped += 1
print(f"skipped {skipped} days between {start} and {start+timedelta(days=days_to_add)}.")
# skipped 2 days between 2020-01-01 and 2020-01-12.
Небольшой обзор: pandas
date_range
может быть здесь полезен, если вы хотите чтобы попасть в это:
import pandas as pd
# create a date range with all dates, including the ones to skip:
dr = pd.date_range(start, periods=days_to_add+1)
# select only the dates that are not in dates_to_skip:
dr = dr[~dr.isin(dates_to_skip)]
print(dr)
# DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04',
# '2020-01-05', '2020-01-08', '2020-01-09', '2020-01-10',
# '2020-01-11', '2020-01-12'],
# dtype='datetime64[ns]', freq=None)