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

如何计算数组中多个datetime.timedelta对象的平均值并格式化输出

多timedelta元素计算平均会话耗时实现方法

核心逻辑:datetime.timedelta原生支持算术运算,不需要手动拆分每个元素的秒、微秒字段做计算,两步就能得到结果。

  • 第一步:对存储所有时长的数组求和,得到总时长。注意调用sum()时要传入初始值datetime.timedelta(0),否则默认初始值为整数0会触发类型错误。
  • 第二步:总时长除以样本总数(即数组长度),得到的结果本身就是timedelta类型,直接转字符串就是你需要的x:xx:xx.xxxxxx格式。

可直接运行的代码示例

import datetime

# 你已有的时长存储数组
duration_list = [
    datetime.timedelta(seconds=1462, microseconds=936503),
    datetime.timedelta(seconds=1706, microseconds=983165)
]

# 计算总时长
total_duration = sum(duration_list, start=datetime.timedelta(0))
# 计算平均时长,结果为timedelta类型
avg_duration = total_duration / len(duration_list)

用你给出的示例数据计算,avg_duration的实际值为0:26:24.959834,完全符合你要求的输出格式。

对接PDF输出格式

你之前写的分秒转换逻辑可以直接复用,不需要修改:

pdf_output = f"会话平均耗时{avg_duration.total_seconds() // 60:.0f}min {avg_duration.total_seconds() % 60:.0f}s"

如果需要向下取整而非四舍五入,把取整逻辑调整为整数截断即可。

低版本Python兼容写法

如果你使用的是Python 2环境(不支持timedelta直接除以整数),可以先转成总秒数计算平均值,再转回timedelta对象:

avg_seconds = total_duration.total_seconds() / len(duration_list)
avg_duration = datetime.timedelta(seconds=avg_seconds)

内容的提问来源于stack exchange,提问作者Olovia.solfjell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:27:24