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

如何用Python实现Lambda函数生成当前年份±3年的年份范围列表?

优化Python年份列表生成的Lambda函数实现

嘿,很高兴能帮你优化这段代码!你的思路没问题,但确实有更简洁、更不易出错的写法,同时也能轻松扩展到通用的年份范围生成需求。

先解决你的第二个问题:优化当前前后3年的生成

你原来的代码里有个小bug——twoYearFuture和threeYearFuture都写成了+1,这样会得到三个相同的未来年份(当前+1),而且重复调用datetime.datetime.now().year有点冗余。

更优的写法是先只获取一次当前年份,然后用列表推导式生成偏移范围:

import datetime

current_year = datetime.datetime.now().year
years = [current_year + offset for offset in range(-3, 4)]

解释一下:

  • range(-3, 4)会生成-3, -2, -1, 0, 1, 2, 3这些偏移值
  • 每个偏移值加到当前年份上,就自动得到了前3年、当前年、后3年的完整列表
  • 这样既避免了重复调用时间函数,也不会出现手写偏移量的错误

如果要写成Lambda函数的话,可以这样:

import datetime

generate_near_years = lambda: [datetime.datetime.now().year + offset for offset in range(-3, 4)]

# 调用示例
print(generate_near_years())  # 输出类似 [2021, 2022, 2023, 2024, 2025, 2026, 2027]

再扩展到需求1:通用指定范围的年份列表生成

如果要实现一个能生成任意范围年份的Lambda函数,可以让它接收偏移参数(比如起始偏移和结束偏移),更贴合“以当前年份为基准”的需求:

import datetime

generate_year_range = lambda start_offset, end_offset: [
    datetime.datetime.now().year + offset 
    for offset in range(start_offset, end_offset + 1)
]

# 调用示例:生成当前年及前2年、后1年
print(generate_year_range(-2, 1))  # 输出类似 [2022, 2023, 2024, 2025]
# 调用示例:生成当前年及前5年
print(generate_year_range(-5, 0))  # 输出类似 [2019, 2020, 2021, 2022, 2023, 2024]

如果需要直接指定起始和结束年份(不以当前年为基准),也可以调整Lambda函数:

generate_year_list = lambda start_year, end_year: list(range(start_year, end_year + 1))

# 调用示例:生成2020到2025年的列表
print(generate_year_list(2020, 2025))  # 输出 [2020, 2021, 2022, 2023, 2024, 2025]

总结一下,用列表推导式结合range可以大大简化代码,减少冗余和出错的概率,同时Lambda函数能让这个逻辑更灵活可复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:32:29