为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

aluckdog 2021-06-30 13:00:17
我希望从现在开始创建过去 6 个工作周的列表。我目前有效的是:import datetimecww = 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']这将一直持续到明年的第一次世界大战。我可以想到几种解决这个问题的蛮力方法,但想要更优雅的东西。
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您可以使用datetime.timedelta():


import datetime


now = 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']



查看完整回答
反对 回复 2021-07-06
  • 1 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号