技术需求:开发可生成至3000年及以后季度的无限迭代函数
实现无限生成季度值的函数
核心思路
用生成器函数实现无限迭代,不需要提前预生成所有季度值,随用随取,完全符合“无限生成”的要求,同时支持自定义起始季度/年份,还能正向、反向生成。
代码实现
基础版(正向无限生成)
def generate_quarters(start_year=2020, start_quarter=1): current_year = start_year current_quarter = start_quarter while True: yield f"q{current_quarter} {current_year}" # 自动切换季度和年份 current_quarter += 1 if current_quarter > 4: current_quarter = 1 current_year += 1
使用示例
# 从q1 2020开始生成前10个季度 quarter_generator = generate_quarters(2020, 1) for _ in range(10): print(next(quarter_generator))
输出结果:
q1 2020
q2 2020
q3 2020
q4 2020
q1 2021
q2 2021
q3 2021
q4 2021
q1 2022
q2 2022
增强版(支持反向无限生成)
如果需要往前无限生成更早的季度,比如从q4 2020倒推到q1 1990、q4 1989...,可以加个反向参数:
def generate_quarters(start_year=2020, start_quarter=1, reverse=False): current_year = start_year current_quarter = start_quarter while True: yield f"q{current_quarter} {current_year}" if reverse: # 往前切换季度 current_quarter -= 1 if current_quarter < 1: current_quarter = 4 current_year -= 1 else: # 往后切换季度 current_quarter += 1 if current_quarter > 4: current_quarter = 1 current_year += 1
适配需求的优化点
针对“无限生成、格式匹配qX YYYY”的要求,这个方案的优势:
- 无固定年份上下限,只要持续调用就能一直生成(不管是到2500年还是更早的年份)
- 格式严格符合要求,输出如
q1 2020、q4 2500这类格式 - 起始点可灵活配置,满足不同场景的生成需求
内容的提问来源于stack exchange,提问作者user21110020
相关产品推荐
相关产品推荐

