从日期列表中删除datetime.datetime日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从日期列表中删除datetime.datetime日期相关的知识,希望对你有一定的参考价值。

我有一个从表中返回的日期列表:

pre_dates = [datetime.datetime(2015, 4, 16, 0, 0), datetime.datetime(2015, 4, 16, 0, 0), datetime.datetime(2015, 4, 16, 0, 0), datetime.datetime(2015, 4, 16, 0, 0), datetime.datetime(2015, 4, 16, 0, 0), datetime.datetime(2015, 4, 16, 0, 0), datetime.datetime(2015, 4, 16, 0, 0), datetime.datetime(2015, 4, 16, 0, 0), datetime.datetime(9999, 9, 9, 0, 0), datetime.datetime(9999, 9, 9, 0, 0), datetime.datetime(9999, 9, 9, 0, 0), datetime.datetime(9999, 9, 9, 0, 0), datetime.datetime(9999, 9, 9, 0, 0), datetime.datetime(9999, 9, 9, 0, 0), datetime.datetime(9999, 9, 9, 0, 0), datetime.datetime(9999, 9, 9, 0, 0), datetime.datetime(9999, 9, 9, 0, 0), datetime.datetime(9999, 9, 9, 0, 0), datetime.datetime(9999, 9, 9, 0, 0), datetime.datetime(9999, 9, 9, 0, 0)]

如您所见,它们的格式为datetime.datetime(YYYY, M, DD, H, M)。我基本上想要从列表中删除所有datetime.datetime(9999, 9, 9, 0, 0)项目。个别日期实际上等于9999-09-09 00:00:00所以我一直在尝试以下,但它总是在我的syntax error: invalid syntax声明中抛出if。这有什么问题?

 for date in pre_dates:
     if date = 9999-09-09 00:00:00:
         pre_dates.remove(date)

     # also tried if date = datetime.datetime(9999, 9, 9, 0, 0):
     # same error
答案

你可以在像this这样的日期进行平等比较。

toRemove = datetime.datetime(9999, 9, 9, 0, 0)
for date in pre_dates:
    if (date == toRemove):
        pre_dates.remove(date)

然而,这是一个有点昂贵的操作,因为remove在O(n)中运行,如here所见。我会使用这样的列表理解:

goodDates = [d for d in pre_dates if d != datetime.datetime(9999, 9, 9, 0, 0)]
另一答案

1)使用==而不是=

2)您可以直接将它与datetime对象进行比较

 for date in pre_dates:
     if date == datetime.datetime(9999, 9, 9, 0, 0):
         pre_dates.remove(date)
另一答案
for date in copy(pre_dates):
 if date == datetime.datetime(9999, 9, 9, 0, 0):
     pre_dates.remove(date)

这解决了3个问题。

  • 您不应迭代列表并同时编辑它。
  • 你使用=而不是==
  • 你最初比较错误的类型

以上是关于从日期列表中删除datetime.datetime日期的主要内容,如果未能解决你的问题,请参考以下文章

python中datetime模块中的strftime与strptime

python中datetime模块中的strftime与strptime

python 获取时间范围内日期列表

如何从现在开始7天分割日期

如何从日期时间获取日期名称

datetime怎么改