Python中如何用列表推导式结合enumerate改写日期处理循环代码
Python列表推导式改写方案
以下是和你原始代码逻辑完全等价的改写版本:
import datetime # 生成过去60天的日期列表(顺序为60天前到昨天,无需额外删除/反转操作) base = datetime.datetime.today() date_list = [base - datetime.timedelta(days=x) for x in range(60, 0, -1)] # 生成每个日期重复两次的字符串列表 dates = [date_str for val in date_list for date_str in (str(val)[:10], str(val)[:10])] # 筛选出周末的日期字符串 weekend = [str(val)[:10] for val in date_list if val.isoweekday() in (6, 7)]
逻辑说明
- 你原有循环中并没有用到
enumerate返回的索引值idx,因此改写时不需要使用enumerate,逻辑更简洁 - 优化了初始
date_list的生成逻辑,通过调整range的遍历顺序,直接生成符合要求的日期序列,省去后续删除首项、反转列表的操作 dates的推导式用双层循环实现单个日期两次存入列表的效果,和你原有两次append的操作结果完全一致weekend的推导式直接通过末尾的判断条件筛选周六、周日的日期,无需额外分支判断
内容的提问来源于stack exchange,提问作者antekkalafior
相关产品推荐
相关产品推荐

