gpt4 book ai didi

python - 减去存储在两个单独列表中的 datetime.time 对象

转载 作者:行者123 更新时间:2023-11-28 22:48:14 25 4
gpt4 key购买 nike

我有两个列表,每个列表中始终包含相同数量的对象。它们是 datetime.time 对象。例如

list1 = [ Dt_Obj_1, Dt_Obj_2]
list2 = [ Dt_Obj_3, Dt_Obj_4]

我总是需要用这种格式做减法

list2[0] - list1[0] , list2[1] - list1[1], etc..

我需要返回 timedelta 对象,所以我也一直在尝试将其放入其中:

datetime.combine(datetime(1,1,1,0,0,0), dt_obj2) - datetime.combine(datetime(1,1,1,0,0,0), dt_obj1)

有了列表理解,但我似乎无法找到一种方法来将这些东西放在一起以使其发挥作用。此列表最多可以存储 7 个 datetime.time() 对象,尽管我确信它微不足道,但我认为我应该提及它以防万一。

最佳答案

使用zip()合并列表,datetime.datetime.combine()datetime.date.min :

import datetime
from functools import partial

comb = partial(datetime.datetime.combine, datetime.date.min)

result = [comb(t1) - comb(t2) for t1, t2 in zip(list1, list2)]

我用了functools.partial()在这里使列表理解不那么冗长;调用 comb(argument) 在本质上与调用 datetime.datetime.combine(datetime.date.min, argument) 相同。

演示:

>>> import datetime
>>> from functools import partial
>>> list1 = [datetime.time(10, 20), datetime.time(13, 14)]
>>> list2 = [datetime.time(2, 15), datetime.time(4, 21)]
>>> comb = partial(datetime.datetime.combine, datetime.date.min)
>>> [comb(t1) - comb(t2) for t1, t2 in zip(list1, list2)]
[datetime.timedelta(0, 29100), datetime.timedelta(0, 31980)]

关于python - 减去存储在两个单独列表中的 datetime.time 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25346019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com