经过日期后从数组中删除项目

问题描述 投票:0回答:5

我在Python项目中有一个数组,并使用以下代码向该数组中添加项目:

items.append({"date":time.time(), "item":item})

我想删除10秒钟后日期过去的所有项目,我这样做是:

items = [item for item in items if item['date'] + 10 <= time.time()]

但是此代码将删除所有项目,而不是删除通过10秒的项目,知道是什么问题吗?

python arrays python-3.x
5个回答
0
投票

您将需要使用timedelta对象

from datetime import (
  datetime,
  timedelta
)
items.append({"date":datetime.now(), "item":item})
items = [item for item in items if item['date'] + timedelta(seconds=10) <= datetime.now()]

0
投票

您要删除列表中存在时间超过10秒的项目,要保存少于10秒的项目,请更改代码以进行相反的检查。

items = [item for item in items if item['date'] + 10 > time.time()]

0
投票

您应该检查时间点+ 10秒是否大于当前时间点,因为这意味着还没有过去10秒

items = [item for item in items if item['date'] + 10 > time.time()]

我将更改时间逻辑以使其更清楚:

items = [item for item in items if time.time() - item['date'] <= 10]

0
投票

首先您应该使用timedelta。

import datetime    

present = datetime.datetime.now()
past = present - datetime.timedelta(seconds=10)

items.append({"date":present, "item":item})    
items = [item for item in items if item['date'] <= past]

-1
投票
if (item['date'] - time.time()) =< 10

if item['date'] + 10 =< time.time()
热门问题
推荐问题
最新问题