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

如何对动态更新的datetime.timedelta列表求和?

解决动态timedelta列表的求和问题

嗨,这个问题我之前也碰到过!其实sum()函数完全可以用来计算动态长度的timedelta列表总和,只是你漏掉了一个关键参数——初始值。

为什么直接用sum(liste1)不行?

Python的sum()函数默认初始值是0(整数类型),而整数和datetime.timedelta类型无法直接相加,这就会导致报错或者不符合预期的结果。你之前尝试切片后用sum得到错误结果,本质也是因为没指定正确的初始值。

正确的解法

只需要给sum()传入start=datetime.timedelta(0)作为初始累加值,这样所有参与计算的元素都是timedelta类型,就能顺利求和了:

import datetime

# 动态生成的timedelta列表,长度不确定
liste1 = [
    datetime.timedelta(0, 10800),
    datetime.timedelta(31),
    datetime.timedelta(0, 10800),
    # 可以随时新增元素
    datetime.timedelta(2, 7200)
]

# 正确求和方式
total_duration = sum(liste1, start=datetime.timedelta(0))
print(total_duration)
# 输出:33 days, 8:00:00

另一种备选方案(循环累加)

如果你觉得sum的参数容易忘,也可以用循环手动累加,逻辑更直观:

import datetime

liste1 = [datetime.timedelta(0, 10800), datetime.timedelta(31), datetime.timedelta(0, 10800)]
total = datetime.timedelta(0)
for delta in liste1:
    total += delta

print(total)
# 输出:31 days, 6:00:00

两种方法都能完美处理动态长度的timedelta列表求和问题,推荐用sum()的方式,代码更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:33:42