大家好,我有一个小编码问题:
我有一个从0
到6
的数字列表,代表星期日到星期六的星期几
所以Sunday = 0
和Saturday = 6
所以列表是[0,1,2,3,4,5,6]
如果来自<和/,则在两天(或数字)之间检索列表没有问题。到。
例如:
从Monday= 1
到Thursday= 4
,这些数字包括:[1,2,3,4]
当你必须从>中检索天数列表时出现问题。至:
例如:
从Friday = 5
到Tuesday =2
,我们需要抓住此列表:[5, 6, 0, 1, 2]
你知道我怎么能编码一个算法或一个函数,它会给我一个天数列表(这里是数字),如果我给出一个数字“from”和一个数字“to”什么“from”是劣等的或高于“至”价值。
非常感谢你的帮助。
答案 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)
这应该这样做。如果您需要任何调整,请告诉我。