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

如何在Python中生成YYYYMM格式的年月序列?

Python生成连续年月序列问题

我用range(datetime.now().year - 1, datetime.now().year + 1)生成年份,输出:

2023
2024

用range(1, 13)生成月份:

1
2
...
12

想要生成如下格式的年月序列:

202301
202302
...
202411
202412

尝试执行语句:

range(datetime.now().year - 1, datetime.now().year + 1) * 100 + range(1,13)

报错:

unsupported operand type(s) for *: 'range' and 'int'

实际应用中有更多年份,请问如何实现?


解决方案

方法1:嵌套循环格式化

遍历每个年份和对应的月份,通过字符串格式化确保月份为两位数字:

from datetime import datetime

years = range(datetime.now().year - 1, datetime.now().year + 1)
months = range(1, 13)

year_month_list = []
for year in years:
    for month in months:
        year_month = f"{year}{month:02d}"
        year_month_list.append(year_month)

# 打印结果
for ym in year_month_list:
    print(ym)

方法2:列表推导式简化

用列表推导式将嵌套逻辑压缩为一行,代码更简洁:

from datetime import datetime

years = range(datetime.now().year - 1, datetime.now().year + 1)
months = range(1, 13)

year_month_list = [f"{year}{month:02d}" for year in years for month in months]

# 输出结果
for ym in year_month_list:
    print(ym)

方法3:itertools.product生成笛卡尔积

当年份或月份序列较长时,用itertools.product直接生成所有年-月组合,效率更高:

from datetime import datetime
import itertools

years = range(datetime.now().year - 1, datetime.now().year + 1)
months = range(1, 13)

year_month_list = [f"{year}{month:02d}" for year, month in itertools.product(years, months)]

# 打印结果
for ym in year_month_list:
    print(ym)

方法4:基于datetime模块生成严格时间序列

如果需要处理复杂的时间边界(比如起始/结束不是整年度),可以通过逐月递增日期来生成:

from datetime import datetime

start_year = datetime.now().year - 1
end_year = datetime.now().year

current_date = datetime(start_year, 1, 1)
year_month_list = []

while current_date.year <= end_year:
    year_month = current_date.strftime("%Y%m")
    year_month_list.append(year_month)
    # 月份递增,跨年自动切换年份
    next_month = current_date.month + 1
    next_year = current_date.year
    if next_month > 12:
        next_month = 1
        next_year += 1
    current_date = datetime(next_year, next_month, 1)

# 输出结果
for ym in year_month_list:
    print(ym)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:51:08