>>> from datetime import date >>> dates = [date(2022, 10, 5), date(2022, 10, 6), date(2022, 10, 7), date(2022, 10, 8), date(2022, 10, 10), date(2022, 10, 11)] >>> len(list(itertools.dropwhile(lambda ds: (ds[1]-ds[0]).days == 1, zip(dates, dates[1:])))) 2 >>> >>> # to understand the steps it does: >>> >>> list(zip(dates, dates[1:])) # get pairs of first/second, second/third, etc. [ (datetime.date(2022, 10, 5), datetime.date(2022, 10, 6)), (datetime.date(2022, 10, 6), datetime.date(2022, 10, 7)), (datetime.date(2022, 10, 7), datetime.date(2022, 10, 8)), (datetime.date(2022, 10, 8), datetime.date(2022, 10, 10)), (datetime.date(2022, 10, 10), datetime.date(2022, 10, 11)) ] >>> list(itertools.dropwhile(lambda ds: (ds[1]-ds[0]).days == 1, zip(dates, dates[1:]))) # drop as long as the difference in days is 1 [(datetime.date(2022, 10, 8), datetime.date(2022, 10, 10)), (datetime.date(2022, 10, 10), datetime.date(2022, 10, 11))] >>> >>> # then, finally, get the length of that (two pairs -> two days)