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

Python如何从给定日期字符串列表中筛选出过去365天内的日期

最高效解法思路

整个过程只需要一次遍历,时间复杂度为O(n),无多余中间变量占用内存,是理论最优的实现方案:

  1. 提前仅计算1次截止阈值:即当前日期减去365天的日期,避免重复运算
  2. 遍历日期字符串列表,逐行转换为日期格式后直接和阈值比较,符合条件的直接保留

实现代码

from datetime import datetime, timedelta

strings = ['Nov 1 2021', 'Oct 25 2021', 'Oct 18 2021', 'Oct 11 2021', 'Oct 4 2021', 'Sep 27 2021',
                'Sep 20 2021', 'Aug 24 2021', 'Aug 16 2021', 'Aug 9 2021', 'Aug 2 2021', 'Jul 26 2021',
                'Jun 28 2021', 'Jun 21 2021', 'Jun 14 2021', 'Jun 7 2021', 'May 24 2021', 'May 10 2021',
                'May 3 2021', 'Apr 26 2021', 'Apr 12 2021', 'Apr 12 2021', 'Apr 5 2021', 'Mar 22 2021',
                'Feb 22 2021', 'Feb 13 2021', 'Feb 8 2021', 'Feb 1 2021', 'Nov 2 2020', 'Sep 28 2020',
                'Aug 31 2020', 'Aug 20 2020', 'Aug 10 2020', 'Jun 29 2020', 'Jun 22 2020', 'Jun 15 2020',
                'Mar 2 2020', 'Feb 10 2020', 'Feb 3 2020', 'Jan 27 2020', 'Jan 20 2020', 'Jan 13 2020',
                'Jan 6 2020', 'Aug 26 2019', 'Aug 5 2019', 'Jul 29 2019', 'Jul 22 2019', 'Jul 15 2019']

# 计算截止日期,仅需执行1次
cutoff = datetime.today().date() - timedelta(days=365)
# 如果需要固定以你示例中的2021年11月11日作为"今天",替换上面一行为:
# cutoff = datetime(2021,11,11).date() - timedelta(days=365)

# 列表推导式一步完成筛选,返回原格式字符串结果
result = [s for s in strings if datetime.strptime(s, "%b %d %Y").date() >= cutoff]

# 如果需要返回datetime格式的结果,替换为下面的写法即可
# result = [datetime.strptime(s, "%b %d %Y").date() for s in strings if datetime.strptime(s, "%b %d %Y").date() >= cutoff]

超大规模数据的优化方案

如果要处理十万级以上的日期字符串,可使用pandas向量化运算,性能比纯Python遍历高3~5倍:

import pandas as pd

cutoff = pd.Timestamp.today() - pd.Timedelta(days=365)
result = pd.Series(strings)[pd.to_datetime(pd.Series(strings), format="%b %d %Y") >= cutoff].tolist()

原有代码的问题说明

  • 重复计算当前日期:在dateDelta函数中每次调用都重新计算当前日期,完全没有必要
  • 多余的中间变量:创建了dates、elapsed_time、date_and_elapsed_time等多个中间列表,既占用内存又增加了不必要的遍历次数
  • 索引匹配逻辑冗余:不需要通过差值找索引反向匹配,第一次转换日期的时候就可以直接判断是否符合条件,一步完成筛选

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:36:02