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

如何从日期列表移除周末?现有Python代码遗漏周六问题求助

问题原因

你这段代码的核心问题是遍历列表时直接删除元素,导致索引错位。

举个例子:假设处理周六的循环里,列表是[周六A, 周六B],当i=0时删除了周六A,列表会变成[周六B],但循环的i会继续递增到1,此时列表长度已经是1,i=1超出了列表范围,循环直接结束,周六B就被漏掉了。

之前把周六、周日的判断放在同一个循环里时问题更严重——删除一个元素后,后续元素会往前移位,但循环的i仍按原顺序递增,直接跳过了移位后的元素,导致大量周末日期没被删除。

解决方法

推荐两种可靠的写法:

方法1:创建新列表过滤(最简洁)

直接生成仅包含工作日的新列表,彻底规避索引问题:

def clear_weekends(date_list):
    return [date for date in date_list if date.isoweekday() < 6]

方法2:反向遍历删除(原地修改列表)

如果必须原地修改原列表,就从后往前遍历——删除元素不会影响前面未遍历的元素索引:

def clear_weekends(date_list):
    for i in range(len(date_list)-1, -1, -1):
        if date_list[i].isoweekday() in (6, 7):
            del date_list[i]
    return date_list

用这两种写法测试,就不会再出现遗漏周六的情况了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:48:08