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

Python集合推导式访问外部不变变量异常及缺失日期查找优化咨询

缺失日期查找的简洁实现方案

你原实现中通过zip([dates[0]] * len(dates), range(...))的写法完全没有必要,起始日期是固定值,直接在集合推导式里复用即可,不需要生成重复的起始日期列表。

最简实现代码

from datetime import date, timedelta

def find_missing_dates(dates: list[date]) -> list[date]:
    """查找已排序日期列表中缺失的日期"""
    start = dates[0]
    # 计算起止日期之间的总天数,+1是为了包含结束日期
    total_days = (dates[-1] - start).days + 1
    # 生成所有应存在的日期,求差集后排序返回
    return sorted({start + timedelta(days=x) for x in range(total_days)} - set(dates))

如果不需要拆分变量,还可以进一步简化为:

def find_missing_dates(dates: list[date]) -> list[date]:
    return sorted({dates[0] + timedelta(x) for x in range((dates[-1] - dates[0]).days + 1)} - set(dates))

之前报错的说明

你遇到的「无法访问dates变量」报错和推导式写法本身无关,属于代码上下文的作用域问题,正常作用域下直接在推导式里访问dates[0]、dates[-1]都是合法的,不需要额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:36:03