如何创建具有周范围的系列?

我希望从现在开始创建过去 6 个工作周的列表。


我目前有效的是:


import datetime

cww = datetime.datetime.now().isocalendar()[1]

cy = datetime.datetime.now().isocalendar()[0]

l6ww = [str(cy)[2:]+'WW'+str(w) for w in range(cww-5,cww+1)]


print l6ww


['18WW35', '18WW36', '18WW37', '18WW38', '18WW39', '18WW40']

这将一直持续到明年的第一次世界大战。我可以想到几种解决这个问题的蛮力方法,但想要更优雅的东西。


aluckdog
浏览 127回答 1
1回答

慕桂英4014372

您可以使用datetime.timedelta():import datetimenow = datetime.datetime.now().isocalendar()l6ww = [(datetime.datetime.now() - datetime.timedelta(weeks=x)).isocalendar() for x in range(6)]final = [str(i[0])[2:] + 'WW' + str(i[1]) for i in l6ww][::-1]产量:['18WW35', '18WW36', '18WW37', '18WW38', '18WW39', '18WW40']即使您进入新的一年,这也将起作用,无论是向前 x 周还是在过去 x 周。您也可以稍微修改此代码以继续前进:l6ww = [(datetime.datetime.now() + datetime.timedelta(weeks=x)).isocalendar() for x in range(15)]final = [str(i[0])[2:] + 'WW' + str(i[1]) for i in l6ww]产量:['18WW40', '18WW41', '18WW42', '18WW43', '18WW44', '18WW45', '18WW46', '18WW47', '18WW48', '18WW49', '18WW50', '18WW51', '18WW52', '19WW1', '19WW2']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python