检索任何案例的工作日列表

时间:2018-02-01 15:59:52

标签: python algorithm

大家好,我有一个小编码问题:
我有一个从06的数字列表,代表星期日到星期六的星期几 所以Sunday = 0Saturday = 6 所以列表是[0,1,2,3,4,5,6]

如果来自<和/,则在两天(或数字)之间检索列表没有问题。到。
例如:
Monday= 1Thursday= 4,这些数字包括:[1,2,3,4]

当你必须从>中检索天数列表时出现问题。至: 例如:
Friday = 5Tuesday =2,我们需要抓住此列表:[5, 6, 0, 1, 2]

你知道我怎么能编码一个算法或一个函数,它会给我一个天数列表(这里是数字),如果我给出一个数字“from”和一个数字“to”什么“from”是劣等的或高于“至”价值。

非常感谢你的帮助。

4 个答案:

答案 0 :(得分:4)

我会这样做:

def getweekdays(frm, to):
    days = [0,1,2,3,4,5,6]
    if frm <= to:
        return days[frm:to+1]
    else:
        return days[frm:] + days[:to+1]

(我还没检查过代码,但你明白了:))

答案 1 :(得分:0)

最简单的方法是:

day = first_day
while int day != last_day:
    interval_days.add(day)
    if day > 6:
        day = 0

在当天的最低限度初始化日计数器,然后继续增加计数器,直到当天达到最高限度,如果超过最大的一天(6),则将其设置为一周的第一天( 0)。

答案 2 :(得分:0)

您可以使用列表切片:

s = [0,1,2,3,4,5,6]
days_of_week = dict(zip(['sun', 'mon', 'tue', 'wed', 'th', 'fri', 'sat'], s))
def get_days(day_range):
   return range(days_of_week[day_range[0]], days_of_week[day_range[-1]]+1) if days_of_week[day_range[0]] <= days_of_week[day_range[-1]] else s[days_of_week[day_range[0]]:]+s[:days_of_week[day_range[-1]]+1]

ranges = [['fri', 'tue'], ['th', 'sat'], ['mon', 'th']]
print(list(map(get_days, ranges))))

输出:

[[5, 6, 0, 1, 2], [4, 5, 6], [1, 2, 3, 4]]

答案 3 :(得分:0)

days_of_week = [0,1,2,3,4,5,6]
day_1 = 5
day_2 = 2

def days_needed(days_of_week, day_1, day_2, rollover=True):
    if rollover:
        day_list = days_of_week[day_1:day_2 - 1:-1]
    else:
        day_list = days_of_week[day_1:day_2 + 1]
    return day_list

day_list = days_needed(days_of_week,day_1,day_2,rollover=True)

print(day_list)

这应该这样做。如果您需要任何调整,请告诉我。