Использование dateutil ( отредактировано для решения обновленного вопроса ОП ):
import datetime
import random
import dateutil.relativedelta as dr
import itertools
day_of_week = [1,3,5,6]
hour = [1,10,15,17,20]
minute = [4,34,51,58]
now=datetime.datetime.now()
deltas=[]
for min,hr,dow in itertools.product(minute,hour,day_of_week):
# dateutil convention: Monday = 0, Sunday = 6.
next_dt=now+dr.relativedelta(minute=min,hour=hr,weekday=dow)
delta=next_dt-now
deltas.append(delta)
deltas.sort()
Это следующая временная дельта:
print(deltas[0])
# 4 days, 14:22:00
И вот соответствующая дата-время:
print(now+deltas[0])
# 2010-09-02 01:04:23.258204
Обратите внимание, что dateutil использует соглашение Monday = 0, Sunday = 6.