You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

优化Python列表推导式:消除嵌套数组以生成全年周数列表

优化列表推导式:避免生成中间子列表

首先,咱们拆解下你原来的思路:先通过找每周起始索引生成weeks列表,再生成每个周数重复7次的子列表后展平得到最终结果。其实完全可以跳过生成中间子列表的步骤,直接用更简洁高效的方式实现需求。

优化方案1:基于原weeks列表简化

既然你已经生成了weeks列表,我们可以直接遍历周数范围,让每个周数重复7次,不需要先创建长度为7的子数组:

weeks = [w for w in range(sum(months)) if w % 7 == 0]
weeks_expanded = [week_num for week_num in range(1, len(weeks)+1) for _ in range(7)]

这里内层的for _ in range(7)只是用来控制重复次数,不需要用到循环变量_,直接把每个周数连续添加7次到结果列表中,彻底跳过了生成子列表再展平的步骤。

优化方案2:彻底省去weeks列表

更进一步,因为len(weeks)本质就是全年总天数除以7(你的months里每个元素都是7的倍数,总天数肯定是7的整数倍),所以我们连weeks列表都可以不用生成,直接一步到位:

total_days = sum(months)
weeks_expanded = [week_num for week_num in range(1, total_days // 7 + 1) for _ in range(7)]

这个版本效率更高,省去了生成weeks列表的额外步骤,直接通过总天数计算出总周数,再生成每个周数重复7次的结果。

结果一致性验证

两种优化方案生成的weeks_expanded和你原代码的输出完全一致:都是从1到总周数的每个数字连续出现7次,精准对应全年每一天的周数。比如总天数为14天时,输出会是[1,1,1,1,1,1,1,2,2,2,2,2,2,2],和原逻辑的结果完全匹配。

内容的提问来源于stack exchange,提问作者hancho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:03:33